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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中将2个具有不同行和列号的表组合在一起相关的知识,希望对你有一定的参考价值。

我想在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按钮

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

答案

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

library(dplyr)
table2 = table2 %>% mutate(TID = gsub(pattern = "P0", "T", PID))
left_join(table1, table2, by = "TID")

以上是关于如何在R中将2个具有不同行和列号的表组合在一起的主要内容,如果未能解决你的问题,请参考以下文章

python 使用标题名称和列号的组合选择列,支持通配符,正则表达式,切片,索引和电子表格样式的co

如何合并具有不同列号的两个表,同时删除具有大量列的表的重复项

如何在火花中合并或连接具有不相等列号的数据框

VBA如何得到选中的多行 的行号和列号

PHP MySQL将来自不同行的单元格组合在一起具有相同的值

请教在QTableView怎么才能不显示行号和列头