【发布时间】:2023-02-23 11:30:10
【问题描述】:
来自数据框 df(a 和 b 是列名)
a b
xx Apple
yy Orange
zz Apple
dd Mango
pp Mango
我希望输出为
Apple xx,zz
Orange yy
Mango dd,pp
我尝试了aggregate 和group_by 但失败了。
【问题讨论】:
来自数据框 df(a 和 b 是列名)
a b
xx Apple
yy Orange
zz Apple
dd Mango
pp Mango
我希望输出为
Apple xx,zz
Orange yy
Mango dd,pp
我尝试了aggregate 和group_by 但失败了。
【问题讨论】:
单个aggregate 就足以完成此操作。在这里,您可以将 FUN 应用于列 a 并在列 b (a ~ b) 上进行分组。要使用的函数是paste,参数为collapse,以便将多个字符串折叠成一个。
aggregate(a ~ b, df, FUN = paste, collapse = ",")
b a
1 Apple xx,zz
2 Mango dd,pp
3 Orange yy
由于您提到了group_by,因此在dplyr 中执行此操作的正确语法如下:
library(dplyr)
df %>% group_by(b) %>% summarize(a = paste(a, collapse = ","))
# A tibble: 3 × 2
b a
<chr> <chr>
1 Apple xx,zz
2 Mango dd,pp
3 Orange yy
【讨论】: