通过索引

时间:2017-03-02 08:38:08

标签: r list unique

我有以下结构的数据框列表:

cust_num   V2   V3 ...

每个数据框都显示一组客户,其中cust_num可以在单个数据框中出现多次。

我想提取每个数据框的unique客户,并将它们插入到一个新数据框中,其中index数据框(即组)来自。

以下是一个例子:

# df1

cust_num   V2   V3 ...
   1 
   1
   2 

# df2

cust_num   V2   V3 ...
   4 
   4
   5 

我希望我的结果是:

cust_num   group
     1       1
     2       1
     4       2
     5       2

我尝试使用for循环,但是我在将数据插入新数据框并创建组index时遇到了麻烦:

for (i in 1:length(df_list)) {
          x <- unique(df_list[[i]][1])
          new_df <- rbind(x)
}

提前谢谢

2 个答案:

答案 0 :(得分:2)

如果dat是您的数据框列表:

do.call(rbind,lapply(seq_along(dat), function(x) data.frame(cust_num=unique(dat[[x]][,1]),group=x))) 

答案 1 :(得分:0)

如果我正确理解您的问题,我认为您可以使用dplyr包将数据框绑定在一起,同时添加index列,从而避免使用for循环。

library(dplyr)

# Bind list of data frames into a single data frame.
d1 <- bind_rows(df_list, .id = "index")

# Remove duplicates.
filter(d1, !duplicated(d1))