Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将一个表内容集成到另一个表内容中_R_Join_Merge_Integrate - Fatal编程技术网

R 将一个表内容集成到另一个表内容中

R 将一个表内容集成到另一个表内容中,r,join,merge,integrate,R,Join,Merge,Integrate,如何在不添加其他列的情况下将内容合并到两个data.frames/表中 谢谢 如果您想在两个数据集中按列“ID”合并,这将适用于您 merge(x = TABLE1, y = TABLE2[ , c("Name", "Date", "ID")], by = "ID", all=TRUE) 合并时,我正在对第二个数据集进行子设置。如果要按Name、Date和ID列合并,则可以执行以下操作: merge(x = TABLE1, y = TABLE2[ , c("Name", "Date", "I

如何在不添加其他列的情况下将内容合并到两个data.frames/表中


谢谢

如果您想在两个数据集中按列“ID”合并,这将适用于您

merge(x = TABLE1, y = TABLE2[ , c("Name", "Date", "ID")], by = "ID", all=TRUE)
合并时,我正在对第二个数据集进行子设置。如果要按
Name
Date
ID
列合并,则可以执行以下操作:

merge(x = TABLE1, y = TABLE2[ , c("Name", "Date", "ID")], by = c("Name", "Date", "ID"), all=TRUE)

#Output
  Name       Date      ID   Price
1 Green       <NA>  KF3902    NA
2  Pink       <NA>  F43346    NA
3  <NA> 2017-08-04     AMA     2
4  <NA> 2017-09-29    <NA>    33
merge(x=TABLE1,y=TABLE2[,c(“名称”、“日期”、“ID”)],by=c(“名称”、“日期”、“ID”),all=TRUE)
#输出
姓名日期ID价格
1绿色KF3902 NA
2粉红色F4346 NA
3 2017-08-04 AMA 2
4   2017-09-29        33

这里是一个使用
dplyr的解决方案:

library(dplyr)
full_join(table1, table2, 
          by = c("Name", "Date", "ID")) %>%
  select(-Cost, -PNL) %>%
  rename(Item = ID)
结果:

   Name       Date Price   Item
1  <NA> 2017-09-29    33   <NA>
2  <NA> 2017-08-04     2    AMA
3  Pink       <NA>    NA F43346
4 Green       <NA>    NA KF3902
table1 = data.frame(Name = as.character(c(NA, NA)),
                    Date = as.Date(c("2017-9-29", "2017-8-4")),
                    Price = c(33, 2),
                    ID = c(NA, "AMA"),
                    stringsAsFactors = FALSE)

table2 = data.frame(Name = c("Pink", "Green"),
                    Cost = c(25, 876),
                    PNL = c(11, 252),
                    Date = as.Date(c(NA, NA)),
                    ID = c("F43346", "KF3902"),
                    stringsAsFactors = FALSE)

要获得OP所需的输出数据集,您实际上需要
all=TRUE
我收到以下错误消息:“merge.data.table(x=TABLE1,y=TABLE2[,“Name”],:
by
中列出的元素必须是x和y中的有效列名”-名称完全相同。@用户更正。感谢您指出。我更正为“all=TRUE”。仍然是相同的错误。@Tim最好在问题中发布我们的数据,这样我们就可以重现您的错误。当我们没有您使用的相同数据集时,很难判断出哪里出了问题。请不要将数据作为图像发布。而是键入
dput(表1)
dput(表2)
在您的R控制台中,通过编辑将他们的输出复制并粘贴到您的问题中。您可能还想查看此帖子,以提出一个可复制的问题:@useR谢谢您的建议!我很感激。这很有效。谢谢!@Tim不要忘记通过单击向下投票按钮下的灰色复选标记接受最佳答案:)