r - 基于公共值聚合多行
问题描述
我有一个像下面这样的数据集
W X Y Z
A 2 3 4
A 2 3 6
B 1 2 3
C 3 2 1
B 1 3 4
B 1 2 2
只有当 W、X、Y 列中的值相似时,我才想合并/折叠 Z 列中的值。
最终的数据集将是这样的。
W X Y Z
A 2 3 4,6
B 1 2 3,2
C 3 2 1
B 1 3 4
不知道如何做到这一点,任何建议都非常感谢。
解决方案
我们可以按“W”、“X”、“Y”和paste
“Z”的值(toString
是paste(..., collapse=", ")
)分组
library(dplyr)
df1 %>%
group_by(W, X, Y) %>%
summarise(Z = toString(unique(Z)))
# A tibble: 4 x 4
# Groups: W, X [3]
# W X Y Z
# <chr> <int> <int> <chr>
#1 A 2 3 4, 6
#2 B 1 2 3, 2
#3 B 1 3 4
#4 C 3 2 1
或aggregate
从base R
aggregate(Z ~ ., unique(df1), toString)
# W X Y Z
#1 B 1 2 3, 2
#2 C 3 2 1
#3 B 1 3 4
#4 A 2 3 4, 6
数据
df1 <- structure(list(W = c("A", "A", "B", "C", "B", "B"), X = c(2L,
2L, 1L, 3L, 1L, 1L), Y = c(3L, 3L, 2L, 2L, 3L, 2L), Z = c(4L,
6L, 3L, 1L, 4L, 2L)), class = "data.frame", row.names = c(NA,
-6L))
推荐阅读
- android - android 11:录制通话音频
- c# - 带互锁的 C# Max 计数器
- javascript - WIRIS插件不显示任何公式
- python-3.x - 尝试抓取时为每个字段获取空值。刮痧,蟒蛇
- java - 将 XML 文件保存到数据库/ Spring Boot
- android - 将firebase添加到android时出现AndroidX依赖错误
- python - 用于多类分类的 GANs:GANs 如何考虑从多类标记数据中合成数据的类信息?
- node.js - 我的 discord.js 机器人不会踢人,控制台中也没有错误
- r-markdown - 有没有办法在 bookdown 中包含文件的最后更新时间?
- angular-material - 如何自定义@angular-material-components/datetime-picker 宽度?