2017-07-22 22 views
0

我已經R中組由重複的行中dplyr

Ship_No  Number  
    1244   1 
    1244   2 
    1244   3 
    1244   1 
    1245   10 
    1245   10 
    1245   15 
    1245   20 
    1245   20 

在以下數據框中要找到ship_No複製Number組。我想要的數據幀將是

Ship_no  Number 
    1244   1 
    1245   10,20 

只有用逗號分隔的數字分開。

回答

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

我們可以使用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