【发布时间】:2021-12-29 18:07:06
【问题描述】:
借助 dplyr 和 R,您可以使用 group_by 和 summarize 来聚合数据。
例如:
mpg_cyl_carb <- mtcars %>%
group_by(cyl, carb) %>%
summarise(var1 = mean(mpg))
head(mpg_cyl_carb, 3)
A tibble: 3 x 3
Groups: cyl [2]
cyl carb var1
<dbl> <dbl> <dbl>
1 4 1 27.6
2 4 2 25.9
3 6 1 19.8
这意味着当 cyl = 4 和 carb = 4 时,mpg 的平均值为 27.6。当 cyl = 6 且 carb = 1 时,平均值为 19.8,以此类推。
我想将这些聚合结果嵌套在原始数据框中。目前正在加入两个表来执行此操作:
> mtcars %>%
+ left_join(mpg_cyl_carb, by = c("cyl", "carb")) %>%
+ head(3) %>%
+ select(mpg, cyl, carb, var1)
mpg cyl carb var1
1 21.0 6 4 19.75
2 21.0 6 4 19.75
3 22.8 4 1 27.58
但是有没有更简单的方法?变异的单个命令,例如:
> mtcars %>%
+ mutate(. . .)
不是使用 if_else 的解决方案,因为它会增加复杂性。
【问题讨论】: