仅针对相同列的rbind数据帧

时间:2015-10-14 10:56:22

标签: r dataframe rbind

我需要组合24个数据帧。 20个数据帧具有相同的238列,而4个数据帧具有256列。此外,与其他20个数据帧相比,具有256列的4个数据帧具有不同的列顺序。

E.g。 '回答','条件','msg_time','修复'等(20个数据框)

E.g。 'acc_value','nitem','fix','button_press_0','rotation','previous_fix','准确','回答','文件','条件'等(4个数据框)

我想只对所有24个数据帧中相同的列进行rbind。 任何建议都会非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

它不是最优雅的解决方案,但它确实有效。

df <- data.frame()            # empty data.frame
base_names <- names(a)        # base_names will reflect any data.frame that has 238 observations
list_df <- list(a, b, c)      # list of all your data frames

for(item in list_df){         # create loop

  items <- item[, base_names] # only select columns that match the 238 columns
  df <- rbind(df, items)      # append those to the data.frame

}

df                            # all data.frames rbinded

如果你想避免循环,你也可以使用lapply

library(plyr)
library(dplyr) 

df <- data.frame()
base_names <- names(a)
list_df <- list(a, b, c)  

lapply(list_df,
       function(x){

         x_cols <- x[, base_names]
         df <- rbind(df, x_cols)

       }) %>% plyr::ldply(rbind)