【问题标题】:Whats the best way to combine two data frames one over the other without losing the headers?在不丢失标题的情况下将两个数据帧一个接一个组合的最佳方法是什么?
【发布时间】:2015-08-11 18:40:14
【问题描述】:

假设我有两个具有相同列号的数据框,如下所示:

table    number    one
1        a         NA
2        b         NA
3        c         NA

table    number    two
4        x         NA
5        y         NA
6        z         NA

组合这两个数据帧以使两个表的标题不会丢失的最佳方法是什么?这意味着将这两者结合起来,第一行仍然是标题(很明显),第二个表的标题仍然是第一个表最后一行下方的标题。

【问题讨论】:

  • 您为什么要这样做?如果不将每一列都转换为字符或因子,就没有办法完全按照您的描述进行操作。
  • 您想要做的事情没有意义,您希望您的标题成为表格数据中的一行。也许你可以描述你想要这个的原因,以便我们找到意义。
  • 根据您在屏幕上看到的内容,您可以将 data.frames 放入一个列表中,例如 list(df1,df2)。这对于其他操作也可能很方便。
  • 做你想做的最好的方法就是不去做。
  • library(data.table) #1.9.5+; rbindlist(list(df1,df2),fill=T,use.names=T) 可能是实现您的想法的更好方法

标签: r merge dataframe


【解决方案1】:

我想这就是你想要的:

rbind(df1, names(df2), setNames(df2, names(df1))) 

输出:

  table number  one
1     1      a <NA>
2     2      b <NA>
3     3      c <NA>
4 table number  two
5     4      x <NA>
6     5      y <NA>
7     6      z <NA>

数据:

df1 <- read.table(text ="table    number    one
                              1        a         NA
                              2        b         NA
                              3        c         NA",  
                      header =TRUE, stringsAsFactors = FALSE)
df2 <- read.table(text ="table    number    two
                              4        x         NA
                              5        y         NA
                              6        z         NA", 
                      header =TRUE, stringsAsFactors = FALSE)

【讨论】:

  • 嗨@Shivendra Sharma,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2021-02-25
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
相关资源
最近更新 更多