我有以下数据框:
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/