我有一个大型数据集,并且我正在尝试对数据进行分组。我正在尝试使用dplyr和mutate创建一个新列,这是每个组的平均值。然后我想看看这些方法与仅一个类别的平均值之间的区别。
此问题可能与mtcars数据集有关。我如何按“cyl”和&组分对mtcars数据进行分组? “齿轮”然后取每组的“mpg”的平均值。然后,我希望看到每组“mpg”的平均值与特别是所有“gear”= = 5的车辆的差异,但是具有变量“cyl”。
如果我问其他人有同样的问题,我道歉,但我找不到这个具体的问题。
df <- mtcars
df2 <- df %>% group_by(cyl, gear) %>% mutate(mean_mpg = mean(mpg))
答案 0 :(得分:1)
这是相当蛮力但它应该给你你想要的东西。我得到了mpg
和cyl
的平均gear
,只有cyl
忽略了齿轮,然后mpg
的{{1}}忽略了gear
cyl
1}}。
mtcars %>%
group_by(cyl,gear) %>%
mutate(mean_mpg_both = mean(mpg)) %>%
ungroup %>%
group_by(gear) %>%
mutate(mean_gear_mpg = mean(mpg)) %>%
ungroup %>%
group_by(cyl) %>%
mutate(mean_cyl_mpg = mean(mpg)) %>%
select(mpg,cyl,gear,mean_mpg_both,mean_gear_mpg, mean_cyl_mpg) %>%
group_by(cyl,gear) %>%
filter(row_number()==1)
答案 1 :(得分:0)
df2 <- df %>%
group_by(cyl, gear) %>%
summarise(mean_mpg = mean(mpg)) %>%
mutate(comparison_mpg = mean_mpg[which(gear == 5)],
mpg_diff = mean_mpg - comparison_mpg)
结果
# A tibble: 8 x 5
# Groups: cyl [3]
cyl gear mean_mpg comparison_mpg mpg_diff
<dbl> <dbl> <dbl> <dbl> <dbl>
1 4. 3. 21.5 28.2 -6.70
2 4. 4. 26.9 28.2 -1.27
3 4. 5. 28.2 28.2 0.
4 6. 3. 19.8 19.7 0.0500
5 6. 4. 19.8 19.7 0.0500
6 6. 5. 19.7 19.7 0.
7 8. 3. 15.0 15.4 -0.350
8 8. 5. 15.4 15.4 0.
答案 2 :(得分:0)
根据你的评论,我认为这就是你所追求的:
mtcars %>% group_by(cyl) %>%
summarize(mean_by_cyl = mean(mpg),
mean_gear5_by_cyl = mean(mpg[gear == 5]),
mean_diff_from_gear5 = mean_by_cyl - mean_gear5_by_cyl)
# # A tibble: 3 x 4
# cyl mean_by_cyl mean_gear5_by_cyl mean_diff_from_gear5
# <dbl> <dbl> <dbl> <dbl>
# 1 4 26.66364 28.2 -1.53636364
# 2 6 19.74286 19.7 0.04285714
# 3 8 15.10000 15.4 -0.30000000