我正在尝试将以下可正常工作的代码转换为函数。
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;,但它们似乎无关。
答案 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