首页 > 解决方案 > 如果来自另一列的值相同,则粘贴来自不同行的字符串值

问题描述

我想dataframe在现有的基础上创建一个新的。正如标题所示,如果另一列中的值相等,我希望paste某一列中的所有字符串值。

由于我的写作技巧很差,我想我不太清楚我的意思是什么。为了澄清,我创建了一个示例。

现有数据框

如果我有这样的事情:

DF <- data.frame(
    ID = c(1,2,2,3,3,3,4,4,4,4),
    value = c("I","ate","cereals","for","breakfast","it","was","delicious","!!!",":)"))  

新数据框

我想创建这样的东西:

DF2 <- data.frame(
    ID = c(1,2,3,4),
    value = c(paste("I"), paste("ate","cereals"), paste("for","breakfast","it"), paste("was","delicious","!!!",":)")))

当column 中的所有字符串具有相同的值时,value将使用它们进行合并。我在构建一个可以做到这一点的函数时遇到了麻烦。请你帮助我好吗。pasteID

我对dplyr或感到满意data.table

标签: rdataframedata.table

解决方案


dplyr你可以group_by使用summarise

DF %>%
    group_by(ID) %>%
    summarise(value = paste(value, collapse = " "))
## A tibble: 4 x 2
#     ID value
#  <dbl> <chr>
#1    1. I
#2    2. ate cereals
#3    3. for breakfast it
#4    4. was delicious !!! :)

推荐阅读