我试图在for循环中使用group by。我想让葫芦循环每一列,然后我可以执行一个总结行动。我试图在groupby中使用colname(Dfi),但是由于colname返回时带有引号,所以该方法不起作用。
有什么建议吗?
发布于 2017-11-18 15:24:43
如果您还没有完全开始使用for循环,那么最简单的方法可能是使用dplyr::summarise_all或dplyr::sumarise_at --这取决于您的需求。
df <- tibble(
var1 = c(rep("a", 5), rep("b", 5)),
var2 = rnorm(10),
var3 = rnorm(10)
)
df %>%
group_by(var1) %>%
summarise_all(funs(mean = mean))
# A tibble: 2 x 3
var1 var2_mean var3_mean
<chr> <dbl> <dbl>
1 a -0.2715518 -0.6146812
2 b 0.1502118 -0.2061952更新:
对不起,我之前误解了这个问题。您希望遍历"group_by“变量,而不是响应变量。
你可以用整齐的年代做这件事。下面是一个示例:
df <- tibble(
var1 = c(rep("a", 5), rep("b", 5)),
var2 = c(rep("c", 3), rep("d", 7)),
var3 = rnorm(10)
)
groups <- c(quo(var1), quo(var2)) # Create a quoture
for (i in seq_along(groups)) {
df %>%
group_by(!!groups[[i]]) %>% # Unquote with !!
summarise(mean = mean(var3)) %>%
print()
}
# A tibble: 2 x 2
var1 mean
<chr> <dbl>
1 a -0.3451196
2 b 0.4117763
# A tibble: 2 x 2
var2 mean
<chr> <dbl>
1 c -0.2618434
2 d 0.1598305https://stackoverflow.com/questions/47367579
复制相似问题