r - 使用两个数据框列的平均值生成交叉表
问题描述
我有两个数据框,一个名为“students.short”,由以下方式生成:
students.short <- data.frame(shoesize=c(38,39,38,38,39,38,37,36),
population=c("kuopio","kuopio","kuopio","tampere",
"tampere","tampere","tampere","tampere"))
students.short
shoesize population
1 38 kuopio
2 39 kuopio
3 38 kuopio
4 38 kuopio
5 39 tampere
6 38 tampere
7 37 tampere
8 36 tampere
另一个叫做“students.tall”:
students.tall <- data.frame(shoesize=c(44,42,43,43,42,44,43,43),
population=c("kuopio","kuopio","kuopio","kuopio",
"tampere","tampere","tampere","tampere"))
students.tall
shoesize population
1 44 kuopio
2 42 kuopio
3 43 kuopio
4 43 kuopio
5 42 tampere
6 44 tampere
7 43 tampere
8 43 tampere
我需要在人口(kuopio 或 tampere)和每个数据框的鞋码大小之间创建一个交叉表,例如
kuopio tampere
studenst.short 38.3 37.6
studenst.tall 43 43
我找不到一个干净或简单的方法来做到这一点,有什么想法或帮助吗?
解决方案
这是一个dplyr
驱动的答案。我们基本上首先使用.id
参数绑定两个数据帧以区分数据帧。然后我们group_by
and.id
并population
计算平均值,即
library(dplyr)
bind_rows(df1, df2, .id = 'group') %>%
group_by(group, population) %>%
summarise(new = mean(shoesize))
这使,
# A tibble: 4 x 3 # Groups: group [?] group population new <chr> <fct> <dbl> 1 1 kuopio 38.3 2 1 tampere 37.6 3 2 kuopio 43 4 2 tampere 43
推荐阅读
- botframework - Microsoft BotFramework:双用户输入
- asp.net - 使用 GroupBy Id 选择 ASP NET CORE 实体框架
- cordova - 减小 Cordova 应用程序的大小
- javascript - 如何在javascript中检查通知是否已关闭
- bash - GNU Parallel 与多个文件的 shellcheck
- r - 无法从 R 中的 XML 获取值
- node.js - 为什么 Herky 每天都会重置我的文件“data.json”?
- java - 对映射到 java.lang.Class 的列的查询不受支持的鉴别器类型 null
- javascript - Wordpress Javascript 模态显示不关闭
- python - pd.notnull 奇怪的空值检查行为