2017-06-25 33 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 
相关问题