从 Dataframe 列制作列表

6ljaweal  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(121)

来自数据框df(a和B是列名)

a b
xx Apple
yy Orange
zz Apple
dd Mango
pp Mango

我希望输出为

Apple xx,zz
Orange yy
Mango dd,pp

我尝试了aggregategroup_by,但是失败了。

ngynwnxp

ngynwnxp1#

碱基R:

一个aggregate就足以完成这个操作。在这里,您可以将FUN应用到列a,并在列b上进行分组(a ~ b)。要使用的函数是带参数collapsepaste,这样多个字符串将被折叠为一个字符串。

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
svmlkihl

svmlkihl2#

我们可以使用toString,也可以将summarise.by = b一起使用(必须有dplyr 1.1.0才能使用)

df %>%
    summarise(a = toString(a), .by = b)

相关问题