按dplyr中的重复行分组

时间:2017-07-22 11:36:41

标签: r

我在R

中有以下数据框
   Ship_No     Number     
    1244         1
    1244         2
    1244         3
    1244         1
    1245         10
    1245         10
    1245         15
    1245         20
    1245         20

想要按Number找到重复的ship_No群组。我想要的数据框是

   Ship_no      Number
    1244          1
    1245         10,20

只有与逗号重复的数字才会分开。

2 个答案:

答案 0 :(得分:3)

这是使用filtersummarize的解决方案:

library(dplyr)
x <- read.table(textConnection('Ship_No     Number     
    1244         1
    1244         2
    1244         3
    1244         1
    1245         10
    1245         10
    1245         15
    1245         20
    1245         20'), header = TRUE)

x %>% group_by(Ship_No) %>%
    filter(duplicated(Number)) %>%
    summarize(Number = paste0(unique(Number), collapse = ','))

# # A tibble: 2 x 2
#   Ship_No Number
#     <int>  <chr>
# 1    1244      1
# 2    1245  10,20

答案 1 :(得分:1)

我们可以使用data.table

library(data.table)
setDT(x)[duplicated(Number), .(Number = toString(unique(Number))) , Ship_No]
#     Ship_No Number
#1:    1244      1
#2:    1245 10, 20