R - 根据条件求和并合并列

标签 r merge sum

我有以下数据框:

df1 <- data.frame( id = c(1,2,2,3),
                   word = c("house, garden, flower", "flower, red", "garden, tree, forest", "house, window, door, red"),
                   value = c(10,12,20,5),
                   stringsAsFactors = FALSE
)

现在我想根据 id 合并行。因此,如果存在重复的 id,则应合并列 word 中的值,并对列值进行求和。这意味着 df 应如下所示:

id | word                              | value
1  | house, garden, flower             | 10
2  | flower, red, garden, tree, forest | 32
3  | house, window, door, red          | 5

有人知道如何解决这个问题吗?

最佳答案

以 R 为基数:

df1 <- data.frame( id = c(1,2,2,3),
                   word = c("house, garden, flower", "flower, red", "garden, tree, forest", "house, window, door, red"),
                   value = c(10,12,20,5),
                   stringsAsFactors = FALSE
)

want <- data.frame(id = unique(df1$id),
                   word = tapply(df1$word, df1$id, paste, collapse = ", "),
                   value = tapply(df1$value, df1$id, sum))
want

  id                              word value
1  1             house, garden, flower    10
2  2 flower, red, garden, tree, forest    32
3  3          house, window, door, red     5

关于R - 根据条件求和并合并列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584717/

相关文章:

arrays - CUDA:如何在 GPU 中将数组的所有元素相加为一个数字?

r - 具有重复列名的堆栈

java - 用于确定其乘积包含所有必需排列的发电机组的有效算法是什么?

svn - 重新集成分支时,PREV、BASE 或 COMMITTED 修订关键字对于 URL 无效

r - 合并两列上的两个表,而变量的顺序没有作用

ruby:对两个或多个数组的相应成员求和

python - 以相同文本字符串开头的列的总和值

r - 避免 R 中的嵌套循环的数据转换

r - 从经纬度 R 转换为本地时区

r - 计算 r 中的特定数字重复