【发布时间】:2021-06-17 09:01:00
【问题描述】:
我在处理 R 中的数据框时遇到问题。我想根据另一列中单元格的值将不同行中的单元格内容粘贴在一起。我的问题是我希望逐步(累积)打印输出。输出向量必须与输入向量具有相同的长度。 这是一个类似于我正在处理的样本表:
id <- c("a", "a", "a", "b", "b", "b")
content <- c("A", "B", "A", "B", "C", "B")
(testdf <- data.frame(id, content, stringsAsFactors=FALSE))
# id content
#1 a A
#2 a B
#3 a A
#4 b B
#5 b C
#6 b B
这是我希望结果看起来像:
result <- c("A", "A B", "A B A", "B", "B C", "B C B")
result
#[1] "A" "A B" "A B A" "B" "B C" "B C B"
我不需要这样的东西:
ddply(testdf, .(id), summarize, content_concatenated = paste(content, collapse = " "))
# id content_concatenated
#1 a A B A
#2 b B C B
【问题讨论】:
-
您想要“累积粘贴”之类的东西。你可以使用
Reduce:ave(as.character(testdf$content), testdf$id, FUN = function(x) Reduce(paste, x, acc = T)) -
@alexis_laz,这是评论框,不是答案框:-)
-
@alexis_laz:太好了!有效!多谢!万事如意
-
@AnandaMahto :我倾向于将其视为“它必须在某处,但我太懒惰搜索”框:P
-
@alexis_laz,但人们不会阅读 cmets 来寻找答案。因此,除非您要做找到要标记的重复项的工作,否则如果您花 10 秒时间发布答案,让 OP 接受它,并清楚地表明这是一个已解决的问题,这对社区会更有帮助....至少这是我的观点。