首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R用多个函数进行汇总

R用多个函数进行汇总
EN

Stack Overflow用户
提问于 2022-04-04 23:51:52
回答 1查看 319关注 0票数 1

我有一个数据框架,在这个框架中,我将按县分组,然后尝试使用汇总的方式对其余的数据进行汇总。有些变量我想要加起来,而另一些变量我想把它们平均起来

这是我的样本数据:

代码语言:javascript
运行
复制
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))

这是我尝试过的

代码语言:javascript
运行
复制
dat_summary <- dat %>%
  group_by(county) %>%
  summarise(across(c(pop, men), sum)) %>%
  summarise(across(c(crime_rate, rate_2), average))

我知道,如果我只对人口或男性人数进行汇总,那么汇总(跨)是有效的,如果我只是试图找出平均比率--但我如何才能既工作又给我提供我所需要的所有信息的汇总数据框架呢?

我唯一能想到的其他方法是创建一个数据帧分组,并对和变量进行汇总,然后对平均变量进行重复,然后将所有变量连接在一起。

有什么办法让我在一个代码序列中完成这一切吗?谢谢!*注意:我正在使用的费率是n/100,所以在这种情况下,平均汇率是有效的。

EN

回答 1

Stack Overflow用户

发布于 2022-04-05 00:03:30

只要by组变量保持不变,我们就可以在单个across()调用中包含多个summarise()函数,以使用不同的函数来总结输入数据帧中的变量子集。

代码语言:javascript
运行
复制
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输出:

代码语言:javascript
运行
复制
> 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
> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71744913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档