EXCEL或R中如何基于多个过滤器堆叠多个透视表

cfh9epnr  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(106)

我创建了一个透视表。此表按区域聚合数据,可以按2个类别进行筛选(年龄,收入)。如何创建一个表,使每个类别组合(例如幼儿及低于50%FPL,以及幼儿,所有收入)表示在每个聚合内。我过滤了年龄和收入的所有组合,只是复制并粘贴到一个新的电子表格中。我链接了一个视频,在那里我展示了我的意思
https://drive.google.com/file/d/1kUvDNxijXWZyJCCdVy398Gd0uq8vUFvY/view?usp=sharing
我愿意在Excel或R中进行此操作。
非常感谢你的帮助,鲁兹博

lyr7nygr

lyr7nygr1#

为了在Excel中执行此操作,您将需要第三方加载项或至少需要在VBA中编写代码来执行此操作。
在R中,你可以找到一个答案。有一个类似的问题here。它还没有被标记为已回答。

    • R解决方案**在Base-R中,您可以使用aggregate()进行透视。在其他库中也有其他函数,如reforme2、data.table和dyplr。如果您对这些库感到满意,请查找它们的聚合或 * group by * 函数。

样本数据:数据=

我不知道你是否有一个标志来确定一个主题是否合格,如果是这样的话,我将使用一个自定义的聚合,但如果不是这样的话,你可以使用任何传统的聚合函数。

#Costume formula counting flags
 counEle <- function(x){
                    a=length(which(x=="x"))}

然后:

#Create all posibles combinations using Age and Income
combination = expand.grid(unlist(data["Age"]),unlist(data["Income"]))
#Eliminate duplicated combinations
combination=unique(combination)
#Create the loop that filters and aggregate for each combination.
for(i in 1:nrow(combination)){
    new_data=data[data$Age==combination[i,1] & data$Income==combination[i,2],]
    #Check that the data frame has more than 0 columns so it could be aggregated
    if(nrow(new_data)>0){
        #Aggregate the data with the values in place             
   print(try(aggregate(Eligibility~Age+Income+County,new_data,counEle)))
    }           
}

总计数在合格性列中,这是我们想要测量的。这应该输出所有可能的组合(记住try()的错误处理程序)。如果你想忽略计数为0的地方,你可以添加一个附加的步骤,条件为〉0。然后将每个结果写在csv中,或者使用库将其写在Excel选项卡上。

相关问题