如何在R中将具有不同行号和列号的2张表组合在一起

时间:2018-10-07 20:15:08

标签: r dataframe merge rstudio

我想在 R 中将2个表合并在一起。 该表如下所示:-

table1
TID    Date    Time    Item
T01    9/1/10  10:00pm Bag
T01    9/1/10  10:00pm Tea
T01    9/1/10  10:00pm Pen
T02    9/1/10  10:50pm Bread
T02    9/1/10  10:50pm Pencil
T03    9/1/10  11:00pm Sausage
T04    9/1/10  11:30pm Fishball
T04    9/1/10  11:30pm Tissue paper
T05    9/1/10  12:05am Battery

table2
PID     Name
P001    Jason
P002    Mary
P003    Katie
P004    James
P005    Nelson
P006    Helmi

我希望我能得到这样的综合结果:-

    TID    Date    Time    Item         PID     Name
    T01    9/1/10  10:00pm Bag          P001    Jason
    T01    9/1/10  10:00pm Tea          P001    Jason
    T01    9/1/10  10:00pm Pen          P001    Jason
    T02    9/1/10  10:50pm Bread        P002    Mary
    T02    9/1/10  10:50pm Pencil       P002    Mary
    T03    9/1/10  11:00pm Sausage      P003    Katie
    T04    9/1/10  11:30pm Fishball     P004    James
    T04    9/1/10  11:30pm Tissue paper P004    James
    T05    9/1/10  12:05am Battery      P005    Nelson

合并取决于table1,如果它具有相同的ID,则它将使用来自table2的具有相同PID的同一行。另外,我的table2可能没有足够的行用于与table1合并,因此在整个table2用完后,需要重复使用该行。 我已经尝试过了,但是结果失败了。

  

merge(table1,table2,by.x = table1 $ TID,by.y = table2 $ PID)

此错误消息“ fix.by(by.x,x)中的错误:'by'必须与列数匹配”

  

merge(data.frame(datafile,row.names = NULL),data.frame(salary,row.names = NULL),by = 0,all = TRUE)

提示没有此错误消息,但直到5分钟后似乎没有任何结果,并迫使我单击“停止”按钮

任何人都知道如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您的table1使用看起来像TID的{​​{1}},而table2使用看起来像T0X的{​​{1}}。一种方法是在一个表中创建一列以匹配另一个。

PID