当使用 dplyr 的“group_by”和“mutate”时,如果我理解正确,数据帧会根据 group_by 参数拆分为不同的子数据帧。例如,使用以下代码:
set.seed(7)
df <- data.frame(x=runif(10),let=rep(letters[1:5],each=2))
df %>% group_by(let) %>% mutate(mean.by.letter = mean(x))
mean() 依次应用于与 a & e 之间的字母对应的 5 个 sub-dfs 的 x 列。
因此,您可以操作子 dfs 的列,但您可以访问子 dfs 本身吗?令我惊讶的是,如果我尝试:
set.seed(7)
data <- data.frame(x=runif(10),let=rep(letters[1:5],each=2))
data %>% group_by(let) %>% mutate(mean.by.letter = mean(.$x))
结果是不同的。从这个结果,可以推断出“。” df 不连续表示子 dfs,而仅表示“数据”(group_by 函数不会改变任何内容)。
原因是我想使用一个 stat 函数,该函数将数据框作为每个子 dfs 的参数。
谢谢!
最佳答案
我们可以在do
内使用
data %>%
group_by(let ) %>%
do(mutate(., mean.by.letter = mean(.$x)))
关于r - dplyr group_by 和 mutate,如何访问数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551708/