合并具有不同列数的数据框列表?

时间:2020-08-17 03:44:09

标签: r data-binding merge rbind

我有一个庞大的数据框列表,其中包含不同数量的列。我想遍历数据框的每个列表,并合并它们,尽管列数不同。

data<-list()
data[[1]]<-data.frame(x=c(1,4),b=c(7,8),d=c(5,4),y=c(4,7),h=c(8,5)
data[[2]]<-data.frame(x=c(1,NA),b=c(7,8),d=c(5,NA),y=c(4,NA),h=c(8,NA),a=c(NA,87),z=c(NA,7))

这是我的试用版,但没有得到所需的输出:(

 comined_df<-function(index)
    {
      if (nrow(as.data.frame(data[index]))>0)
        {
            cleaned_data_frame <- dplyr::bind_rows(as.data.frame(data[index]))
        }
      else
        {
            return(NULL)
        }
    }

combined_df_final<-lapply(1:length(data), comined_df)

所需的输出如下:

  x b  d  y  h  a  z
1  1 7  5  4  8 NA NA
2  4 8  4  7  5 NA NA
3  1 7  5  4 NA NA NA
4 NA 8 NA NA NA NA  7

有人可以帮助我实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

您可以使用dplyr::bind_rowsdata.table::rbindlist

dplyr::bind_rows(data)

#   x b  d  y  h  a  z
#1  1 7  5  4  8 NA NA
#2  4 8  4  7  5 NA NA
#3  1 7  5  4  8 NA NA
#4 NA 8 NA NA NA 87  7

使用data.table

data.table::rbindlist(data, fill = TRUE)