我有以下结构的数据框列表:
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)
}
提前谢谢
答案 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))