来自数据框 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