【问题标题】:Join data frames by row按行连接数据帧
【发布时间】:2013-03-03 13:30:03
【问题描述】:

我有 1 行的不同 data.frames,我想加入以形成一个大 data.frame。问题是我希望我的colnamesjan 2002 变为dic 2011,并用我的data frames 填充这些列,即使对于一列没有任何价值。 data.frames 上的示例(可以有“离散”日期):

df1:

ene 2002 ene 2002 feb 2002 feb 2002 mar 2002 mar 2002 
    69       MA       38       MA     38       MA 

df2:

ago 2004 ago 2004 sep 2004 sep 2004 oct 2004 oct 2004 
   114       MB      102       MB       49       M

df3:

oct 2011 oct 2011 nov 2011 nov 2011 dic 2011 dic 2011
10       A        9     A           20       MA

df4("离散数据.frame"):

jan 2008 jan 2008  jul 2009 jul 2009 dic 2010  dic 2010
20          MA       200       B       100       MB

Data.frame 想要(希望输出):

ene 2002 ene 2002 feb 2002 feb 2002 mar 2002 mar 2002...ago 2004 ago 2004 sep 2004 sep 2004 oct 2004 oct 2004...jan 2008 jan 2008...jul 2009 jul 2009...dic 2010  dic 2010... oct 2011 oct 2011 nov 2011 nov 2011 dic 2011 dic 2011
    69       MA       38       MA     38       MA          NA       NA       NA       NA       NA       NA        NA       NA         NA       NA         NA        NA          NA       NA       NA       NA       NA       NA                             
    NA       NA       NA       NA     NA       NA          114      MB       102      MB       49       M         NA       NA         NA       NA         NA        NA          NA       NA       NA       NA       NA       NA
    NA       NA       NA       NA     NA       NA          NA       NA       NA       NA       NA       NA        NA       NA         NA       NA         NA        NA          10       A        9        A        20       MA
    NA       NA       NA       NA     NA       NA          NA       NA       NA       NA       NA       NA        20       MA         200      B          100       MB          NA       NA       NA       NA       NA       NA

在此示例中,所有其他没有值的列将是 NA:例如 ene 2003 feb 2003 ..... nov 2005 dic 2005 ...... 2006 年或 2007 年的所有月份(只是说随机示例中没有的月份,但我希望它们出现在我的输出中)

【问题讨论】:

    标签: r join row dataframe bind


    【解决方案1】:

    使用plyrrbind.fill

    rbind.fill(list(df1,df2,df3,df4))
    

    注意:重复的列名(例如:2002 年 2 月)将更改为 feb 2002.1

    编辑:这是我得到的:

    #   ene2002 ene2002.1 feb2002 feb2002.1 mar2002 mar2002.1 ago2004 ago2004.1 sep2004
    # 1      69        MA      38        MA      38        MA      NA      <NA>      NA
    # 2      NA      <NA>      NA      <NA>      NA      <NA>     114        MB     102
    # 3      NA      <NA>      NA      <NA>      NA      <NA>      NA      <NA>      NA
    # 4      NA      <NA>      NA      <NA>      NA      <NA>      NA      <NA>      NA
    #   sep2004.1 oct2004 oct2004.1 oct2011 oct2011.1 nov2011 nov2011.1 dic2011 dic2011.1
    # 1      <NA>      NA      <NA>      NA      <NA>      NA      <NA>      NA      <NA>
    # 2        MB      49         M      NA      <NA>      NA      <NA>      NA      <NA>
    # 3      <NA>      NA      <NA>      10         A       9         A      20        MA
    # 4      <NA>      NA      <NA>      NA      <NA>      NA      <NA>      NA      <NA>
    #   jan2008 jan2008.1 jul2009 jul2009.1 dic2010 dic2010.1
    # 1      NA      <NA>      NA      <NA>      NA      <NA>
    # 2      NA      <NA>      NA      <NA>      NA      <NA>
    # 3      NA      <NA>      NA      <NA>      NA      <NA>
    # 4      20        MA     200         B     100        MB
    

    【讨论】:

    • 这就是我想要的,但正如你所说,重复的列名已经消失了!我不知道为什么....输出只是给我抛出了第一个不重复的日期......可能出了什么问题?
    • @TomásAyala,我已经粘贴了我得到的输出。我也有重复的列。不太清楚你在说什么..你能详细说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 2017-01-23
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多