【发布时间】:2016-02-12 20:46:02
【问题描述】:
我正在寻找一种方法来做相当于 R 中字符串/字符格式文本而不是数字的累积总和的方法。应该连接不同的文本字段。
例如在数据框“df”中:
A 列包含输入,B 列包含所需结果。
A B
1 banana banana
2 boats banana boats
3 are banana boats are
4 awesome banana boats are awesome
目前我正在通过以下循环解决这个问题
df$B <- ""
for(i in 1:nrow(df)) {
if (length(df[i-1,"A"]) > 0) {
df$B[i] <- paste(df$B[i-1],df$A[i])
} else {
df$B[i] <- df$A[i]
}
}
我想知道是否存在更优雅/更快的解决方案。
【问题讨论】:
-
根本不是“cumsum”!
-
性能有问题吗?
-
我认为经典的
cumpaste首先出现在here(可能重复)。感谢@alexis_laz。 -
Another similar Q&A,尽管也像上面的答案一样“按组”。但“按组”很少是棘手的部分......
-
感谢您的所有回答!发现 Reduce 是最快的,因此标记为最佳答案。抱歉,如果这是重复的!我似乎搜索了错误的字词。
标签: r