尝试将两个数据帧组合在一起,但是会抛出错误

时间:2016-10-20 15:22:25

标签: r shiny

所以我有两个数据框,我试图将它们组合在一起。这两个DF具有以下特征:

  1. 它们具有相同的列数
  2. 列名相同
  3. 等量行(每行100个)
  4. 因此每个表中的第一列是ID。一个表的ID为#1到100,而下一个表的ID为#101到200.

    我试图使用rbind函数,但它会抛出一个我无法弄清楚如何解决的错误:

    data3 <- rbind(data1,data2)
    

    错误如下:

    Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
    duplicate 'row.names' are not allowed
    

    有没有人对如何解决这个问题有任何建议?

    最终,我希望将它们合并到ID 1到200的单个数据帧以及列中的所有相应数据中。

    所以说data1看起来像:

     ID    Team       Position
     1     Pirates    Pitcher
     2     Yankees    Catcher
     3     Red Sox    Outfield
    

    数据2看起来像:

    ID    Team       Position
     4     Astros    Pitcher
     5     Brewers   First
     6     Dodgers   Shortstop
    

    我希望最终结果(data3)看起来像:

    ID     Team      Position
     1     Pirates   Pitcher
     2     Yankees   Catcher
     3     Red Sox   Outfield
     4     Astros    Pitcher
     5     Brewers   First
     6     Dodgers   Shortstop
    

    顺便说一句,这些不是我正在使用的名称或数据。更多简单的例子。

2 个答案:

答案 0 :(得分:0)

根据您是否要保留行名称,可以执行以下操作之一:

# Do not preserve row names

rownames(data1) <- NULL
rownames(data2) <- NULL

rbind(data1, data2)


# Preserve the row names

data1 <- cbind(rownames(data1), data1)
data2 <- cbind(rownames(data2), data2)

rownames(data1) <- NULL
rownames(data2) <- NULL

rbind(data1, data2)

答案 1 :(得分:0)

这很容易!由于R代码非常有效,因此只需3行代码即可实现。

File1 = read.table("C:\\Users\\your_path\\Desktop\\File1.txt")
File2 = read.table("C:\\Users\\your_path\\Desktop\\File2.txt")
All = merge(File1, File2, by.x = "Team", by.y = "Team", all = TRUE)