r - 基于分组R组合/连接同一数据框中的行
问题描述
我正在执行一个 map_df 函数,该函数会产生一个类似于下面的 df 的数据框。
name <- c('foo', 'foo', 'foo', 'bar', 'bar', 'bar')
year <- c(19, 19, 19, 18, 18, 18)
A <- c(1, NA, NA, 2, NA, NA)
B <- c(NA, 3, NA, NA, 4, NA)
C <- c(NA, NA, 2, NA, NA, 5)
df <- data.frame(name, year, A, B, C)
name year A B C
1 foo 19 1 NA NA
2 foo 19 NA 3 NA
3 foo 19 NA NA 2
4 bar 18 2 NA NA
5 bar 18 NA 4 NA
6 bar 18 NA NA 5
基于我在 df 中的唯一组,在这种情况下:名称 + 年份,我想将数据合并到同一行中。期望的结果:
name year A B C
1 foo 19 1 3 2
2 bar 18 2 4 5
我绝对可以通过混合过滤和连接来完成此操作,但是使用我的实际数据框将是大量代码且效率低下。 我正在寻找一种更优雅的方式来“挤压”这个数据框。
解决方案
library(dplyr)
df %>%
group_by(name, year) %>%
summarise_all(mean, na.rm = TRUE)
这是一个 dplyr 答案。如果您的数据真的看起来像您发布的数据,它会起作用。
输出:
name year A B C
<fct> <dbl> <dbl> <dbl> <dbl>
1 bar 18 2 4 5
2 foo 19 1 3 2
推荐阅读
- docker - 如何将 elasticsearch 部署到 kubernete?
- pyqt - 有没有一种优雅的方法可以在 PyQt 中删除 QScrollArea 中的小部件?
- windows - 如何使用 PowerShell 在第二台显示器上打开程序?
- gcc - 为 ARM 编译未优化的 Libgcc
- java - 无法理解计算字符串中重复项的代码?
- kubernetes - 无法附加 aws ebs 卷,错误“未找到实例”
- r - 导入 Open Street Map 数据会给出错误的编码
- amazon-web-services - AWS EKS - 只能启动 2 个 Pod - Pod 太多错误
- php - 将多个文件附加到电子邮件中,laravel
- opencv - OpenCV VideoWriter 写入一个空视频