我有一个数据框架,在这个框架中,我将按县分组,然后尝试使用汇总的方式对其余的数据进行汇总。有些变量我想要加起来,而另一些变量我想把它们平均起来
这是我的样本数据:
dat <- data.frame("county" = c("a", "a", "b", "b", "c", "c"),
"pop" = c(10,20,30,40, 40, 20),
"men" = c(5, 15, 15, 25, 15, 10),
"crime_rate"= c(4,3, 2, 1, 6, 2),
"rate_2" = c(1, 2, 1, 4, 3, 10))
这是我尝试过的
dat_summary <- dat %>%
group_by(county) %>%
summarise(across(c(pop, men), sum)) %>%
summarise(across(c(crime_rate, rate_2), average))
我知道,如果我只对人口或男性人数进行汇总,那么汇总(跨)是有效的,如果我只是试图找出平均比率--但我如何才能既工作又给我提供我所需要的所有信息的汇总数据框架呢?
我唯一能想到的其他方法是创建一个数据帧分组,并对和变量进行汇总,然后对平均变量进行重复,然后将所有变量连接在一起。
有什么办法让我在一个代码序列中完成这一切吗?谢谢!*注意:我正在使用的费率是n/100,所以在这种情况下,平均汇率是有效的。
发布于 2022-04-05 00:03:30
只要by组变量保持不变,我们就可以在单个across()
调用中包含多个summarise()
函数,以使用不同的函数来总结输入数据帧中的变量子集。
dat <- data.frame("county" = c("a", "a", "b", "b", "c", "c"),
"pop" = c(10,20,30,40, 40, 20),
"men" = c(5, 15, 15, 25, 15, 10),
"crime_rate"= c(4,3, 2, 1, 6, 2),
"rate_2" = c(1, 2, 1, 4, 3, 10))
library(dplyr)
dat_summary <- dat %>%
group_by(county) %>%
summarise(across(c(pop, men), sum),
across(c(crime_rate, rate_2), mean))
...and输出:
> dat %>%
+ group_by(county) %>%
+ summarise(across(c(pop, men), sum),
+ across(c(crime_rate, rate_2), mean))
# A tibble: 3 × 5
county pop men crime_rate rate_2
<chr> <dbl> <dbl> <dbl> <dbl>
1 a 30 20 3.5 1.5
2 b 70 40 1.5 2.5
3 c 60 25 4 6.5
>
https://stackoverflow.com/questions/71744913
复制相似问题