2017-06-25 34 views
2

我有R中的數據集尋找如下:移動的子數據集唯一變量R中

Member ID Listing ID ... 
1   111 
1   111 
1   112 
2   113 
2   114 
3   115 
... 

我的目標是分割原始數據,並創建子數據集合,其中有沒有「成員ID 「有多個」列表ID「。但是,不應刪除重複項(如ID號爲111的成員ID),並應保留。

在這個例子中:

數據集1:

Member ID Listing ID 
1   111 
1   111 
2   113 
3   115 

數據組2:

Member ID Listing ID 
1   112 
2   114 

我的數據組是更大,最終的輸出可能會是一個100周圍子數據集。

你能幫我一下嗎?

非常感謝!

回答

0

我們可以爲每個Member ID創建一個運行長度ID。之後,通過遊程長度ID拆分數據幀。在以下示例中,最終輸出全部在dt_list2中。

# Load packages 
library(dplyr) 
library(data.table) 

# Create example data frame 
dt <- read.table(text = "'Member ID' 'Listing ID' 
       1   111 
       1   111 
       1   112 
       2   113 
       2   114 
       3   115", 
       header = TRUE, stringsAsFactors = FALSE) 

# Add run length ID 
dt2 <- dt %>% 
    setNames(nm = c("Member ID", "Listing ID")) %>% 
    group_by(`Member ID`) %>% 
    mutate(RL = rleid(`Listing ID`)) 

# Split the data frame by run length ID 
dt_list <- split(dt2, f = dt2$RL) 

# Remove the run length ID for each data frame 
dt_list2 <- lapply(dt_list, function(dt){ 
    dt$RL <- NULL 
    return(dt) 
}) 
0

我想這會做到這一點:

split(dt, (duplicated(dt) | duplicated(dt,fromLast=TRUE)) | (!duplicated(dt$Member.ID))) 

#$`FALSE` 
# Member.ID Listing.ID 
#3   1  112 
#5   2  114 
# 
#$`TRUE` 
# Member.ID Listing.ID 
#1   1  111 
#2   1  111 
#4   2  113 
#6   3  115 
相關問題