首页 文章

dcast和汇总成功能 - 论点丢失了

提问于
浏览
2

我试图将以下代码正常工作转换为函数 .

result_check <- data %>% 
  group_by(column, target)  %>%
  summarise(Unique_Elements = n()) %>%
  dcast(column_code ~ target, value.var="Unique_Elements")

例如,如果我们采用以下数据集:

column1 target
  AA      YES
  BB      NO
  BC      NO
  AA      YES

代码将根据目标变量聚合数据集,如下所示:

column1    YES   NO
   AA       2    0
   BB       0    1
   BC       0    1

这是我构建函数的方式:

aggregate_per_group <- function(column) {
data %>% 
  group_by(column, target)  %>%
  summarise(Unique_Elements = n()) %>%
  dcast(column ~ target, value.var="Unique_Elements")}

但我得到 - 错误:未知变量分组:列 . 我知道它是一个基本问题,但是为什么我在group_by中失去了这个论点的任何线索?

我尝试使用以下的“group_by_”,以及“require(”dplyr“)”,但它们似乎无关 .

1 回答

  • 2

    我们可以使用 table 来自 base R

    table(data)
    

    如果我们对函数感兴趣,那么使用 group_by_spread 来自 tidyr

    aggregate_per_group <- function(column) {
         data %>% 
            group_by_(column, "target")  %>%
            summarise(Unique_Elements = n()) %>%
            spread(target, Unique_Elements, fill = 0)
     }
    
    library(dplyr)
    library(tidyr)
    aggregate_per_group("column1")
    #  column1    NO   YES
    # *   <chr> <dbl> <dbl>
    #1      AA     0     2
    #2      BB     1     0
    #3      BC     1     0
    

    如果我们需要来自 reshape2dcast

    library(reshape2)
    aggregate_per_group <- function(column) {
        data %>% 
           group_by_(column, "target")  %>%
           summarise(Unique_Elements = n()) %>%
           dcast(data = ., paste(column,  '~ target'), 
                  value.var="Unique_Elements", fill = 0)
     }
    
    aggregate_per_group("column1")
    #   column1 NO YES
    #1      AA  0   2
    #2      BB  1   0
    #3      BC  1   0
    

相关问题