来自数据框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
group_by
ngynwnxp1#
一个aggregate就足以完成这个操作。在这里,您可以将FUN应用到列a,并在列b上进行分组(a ~ b)。要使用的函数是带参数collapse的paste,这样多个字符串将被折叠为一个字符串。
FUN
a
b
a ~ b
collapse
paste
aggregate(a ~ b, df, FUN = paste, collapse = ",") b a 1 Apple xx,zz 2 Mango dd,pp 3 Orange yy
既然您提到了group_by,那么在dplyr中执行此操作的正确语法如下所示:
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
svmlkihl2#
我们可以使用toString,也可以将summarise与.by = b一起使用(必须有dplyr 1.1.0才能使用)
toString
summarise
.by = b
df %>% summarise(a = toString(a), .by = b)
2条答案
按热度按时间ngynwnxp1#
碱基R:
一个
aggregate
就足以完成这个操作。在这里,您可以将FUN
应用到列a
,并在列b
上进行分组(a ~ b
)。要使用的函数是带参数collapse
的paste
,这样多个字符串将被折叠为一个字符串。迪普里
既然您提到了
group_by
,那么在dplyr
中执行此操作的正确语法如下所示:svmlkihl2#
我们可以使用
toString
,也可以将summarise
与.by = b
一起使用(必须有dplyr 1.1.0才能使用)