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

问题描述 投票:-1回答:1

我想在R中将两个表组合在一起。表格如下: -

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消耗之后需要重复使用row。我试过这个但结果却失败了。

合并(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分钟后才产生结果,并强迫我点击STOP按钮

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

r dataframe merge rstudio
1个回答
0
投票

你的table1使用TID,它看起来像T0X,table2使用PID,看起来像P00X。一种方法是在一个表中创建一个列以匹配另一个。

library(dplyr)
table2 = table2 %>% mutate(TID = gsub(pattern = "P0", "T", PID))
left_join(table1, table2, by = "TID")
© www.soinside.com 2019 - 2024. All rights reserved.