gpt4 book ai didi

r - 在数据框中按组折叠文本

转载 作者:行者123 更新时间:2023-12-03 15:11:48 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Aggregating by unique identifier and concatenating related values into a string [duplicate]

(4 个回答)


4年前关闭。




如何在列 group 中按组聚合数据框并折叠列中的文本 text ?

样本数据:

df <- read.table(header=T, text="
group text
a a1
a a2
a a3
b b1
b b2
c c1
c c2
c c3
")

所需的输出(数据帧):
group text
a a1a2a3
b b1b2
c c1c2c3

我现在有:
sapply(unique(df$group), function(x) {
paste0(df[df$group==x,"text"], collapse='')
})

这在某种程度上有效,因为它返回按组正确折叠的文本,但作为向量:
[1] "a1a2a3" "b1b2"   "c1c2c3"

我需要一个带有 group 的数据框结果列。

最佳答案

只需使用 aggregate :

aggregate(df$text, list(df$group), paste, collapse="")
## Group.1 x
## 1 a a1a2a3
## 2 b b1b2
## 3 c c1c2c3

或与 plyr
library(plyr)
ddply(df, .(group), summarize, text=paste(text, collapse=""))
## group text
## 1 a a1a2a3
## 2 b b1b2
## 3 c c1c2c3
ddplyaggregate 快如果你有一个大数据集。

编辑 :
根据@SeDur 的建议:
aggregate(text ~ group, data = df, FUN = paste, collapse = "")
## group text
## 1 a a1a2a3
## 2 b b1b2
## 3 c c1c2c3

对于与早期方法相同的结果,您必须执行以下操作:
aggregate(x=list(text=df$text), by=list(group=df$group), paste, collapse="")

编辑2 : 与 data.table :
library("data.table")
dt <- as.data.table(df)
dt[, list(text = paste(text, collapse="")), by = group]
## group text
## 1: a a1a2a3
## 2: b b1b2
## 3: c c1c2c3

关于r - 在数据框中按组折叠文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22756372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com