【问题标题】:Rbind and merge in R在 R 中绑定和合并
【发布时间】:2016-11-18 01:26:51
【问题描述】:

所以我有这么大的数据框列表,其中一些具有匹配的列,而另一些则没有。我想 rbind 具有匹配列的列,并合并其他没有匹配列的列(基于变量 Year、Country)。但是,我不想手动查看所有数据框以查看哪些具有匹配的列,哪些没有。

现在我在想它会看起来像这样:

myfiles = list.files(pattern="*.dta")
dflist <- lapply(myfiles, read.dta13)

for (i in 1:length(dflist)){

  if colnames match
    put them in list and rbindlist.
  else put them in another list and merge.
}    

除了不知道如何在 R 中准确地做到这一点,我开始认为这毕竟行不通。

为了说明考虑 6 个数据框:

Dataframe 1:                          Dataframe 2:

Country Sector Emp              Country   Sector Emp
Belg      A     35                NL        B     31
Aus       B     12                CH        D     45
Eng       E     18                RU        D     12

Dataframe 3:                      Dataframe 4:
Country Flow    PE               Country  Flow PE   
NL        6     13                 ...    ...   ... 
HU        4     11                 ...    ...
LU        3     21                 ...

Dataframe 5:              dataframe 6:

Country Year Exp          Country Year Imp 
 GER     02   44           BE      00   34
 GER     03   34           BE      01   23
 GER     04   21           BE      02   41 

在这种情况下,我想 rbind (dataframe 1,dataframe2) 和 rbind(dataframe 3, dataframe 4),并且我想根据变量 country 和 year 合并 dataframe 5 和 6。所以我的输出将是几个 rbinded/merged dataframes..

【问题讨论】:

  • 我认为 merge (with all=TRUE) 将 rbind (虽然更慢),所以将它们合并在一起可能会起作用。对于如何做到这一点,stackoverflow.com/questions/8091303/…
  • 这个有什么更新吗?你找到解决这个问题的方法了吗?

标签: r list dataframe merge rbind


【解决方案1】:

如果列不同,Rbind 将失败。按照建议,您可以使用 dplyr 包中的 mergeleft_join

也许这会起作用:do.call(left_join, dflist)

【讨论】:

    【解决方案2】:

    对于相同的列数据框,您可以联合或联合所有操作。 union 将删除所有重复值,如果您需要重复条目,请使用 Union all。 (对于数据框 1 和数据框 2)&(对于数据框 3 和数据框 4)使用 Union 或 Union all 操作。对于数据框 5 和数据框 6,使用

    merge(x= dataframe5, y=dataframe6, by=c("Country", "Year"), all=TRUE) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多