我正在尝试将以下可以正常工作的代码转换为一个函数。
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”)”,但它们似乎无关。
最佳答案
我们可以使用base R
中的table
table(data)
如果我们对某个函数感兴趣,请使用 group_by_
以及 tidyr
中的 spread
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
如果我们需要来自reshape2
的dcast
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
关于r - dcast 和汇总到一个函数中 - 参数丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329845/