从数据框列中列出

问题描述 投票:0回答:1

来自数据框 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
但失败了。

r dataframe dplyr group-by aggregate
1个回答
2
投票

基地R:

一个

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

Dplyr

既然你提到了

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   
© www.soinside.com 2019 - 2024. All rights reserved.