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

时间:2016-12-26 10:30:21

标签: r function dplyr dcast

我正在尝试将以下可正常工作的代码转换为函数。

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中失去了这个论点的任何线索?

我尝试过使用以下内容&#34; group_by _&#34;以及&#34; require(&#34; dplyr&#34;)&#34;,但它们似乎无关。

1 个答案:

答案 0 :(得分: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

如果我们需要dcast

中的reshape2
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