首页 > 解决方案 > 如何将列表中的 data.frames 合并/附加到一起并删除重复项

问题描述

我有一个列表,其中包含多个具有相同名称设置的 data.frame。我想将它们组合成一个 data.frame 并删除重复项。我怎样才能做到这一点?

可以使用代码构建示例数据:

lst1 <- list(data1 = mpg, data2 = mpg, data3 = mpg)

结果将是mpg

某事喜欢:

在此处输入图像描述

非常感谢。

标签: r

解决方案


也许这个。您可以为列表中的每个数据框创建一个 id,绑定后您可以排除重复的值:

library(dplyr)
#Data
lst1 <- list(data1 = mpg, data2 = mpg, data3 = mpg)
lst1 <- lapply(lst1, function(x) {x$id<-1:nrow(x);return(x)})
#Bind
df <- do.call(bind_rows,lst1)
df2 <- df[!duplicated(df$id),]
df2$id <- NULL

更新:要保留数据源:

library(dplyr)
#Data
lst1 <- list(data1 = mpg, data2 = mpg, data3 = mpg)
lst1 <- lapply(lst1, function(x) {x$id<-1:nrow(x);return(x)})
#Bind
df <- bind_rows(lst1,.id = 'data')
df2 <- df[!duplicated(df$id),]
df2$id <- NULL

推荐阅读