Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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_Merge - Fatal编程技术网

R 合并函数和源中的重复列名

R 合并函数和源中的重复列名,r,merge,R,Merge,我可以在中更改名称,但相信可能有一个覆盖可以解决此问题 有人能提供快速帮助吗?一个选项是使用setdiff删除其中一个数据集中的“RegID”,并在假设两个数据集中的“RegID”相同的情况下进行合并 "Error in `[.data.frame`(merge(a, b, by = "Date", all.y = TRUE), : undefined columns selected" 以编程方式,如果有多个相交列,请使用intersect查找并从中删除“日期” merge(a, b

我可以在中更改名称,但相信可能有一个覆盖可以解决此问题


有人能提供快速帮助吗?

一个选项是使用setdiff删除其中一个数据集中的“RegID”,并在假设两个数据集中的“RegID”相同的情况下进行合并

"Error in `[.data.frame`(merge(a, b, by = "Date", all.y = TRUE),  : 
  undefined columns selected"
以编程方式,如果有多个相交列,请使用intersect查找并从中删除“日期”

merge(a, b[setdiff(names(b), "RegID")], by = "Date", all.y = TRUE)[ ,"RegID"]

我不知道那是怎么起作用的,但它起作用了。setdiff到底做什么?临时更改名称?无法将我的头缠绕在它周围。@dwdionis它将删除该元素。e、 除非您确定公共行的alla$RegID==b$RegID,否则这将自动丢弃数据。没有这些,这个答案就不是你应该做的。如果你不介意删除数据,那么这个方法很好:-@r2evans我实际上只是想在按日期匹配值的同时将数据从a移到b,就像excel vlookup一样。两列中的日期略有不同。我只想把a中的内容移到b中,b在那个时候从技术上说是空的,但如果可能的话,我想保持名称不变。@r2evans是的,它有后缀部分。一般来说,我不会选择在我的数据中使用重复的列名。您是否查看了数据合并后和[,RegID]之前的数据?这很可能证明您的名字现在是RegID.x和RegID.y.BTW:b[,17]
merge(a, b[setdiff(names(b), "RegID")], by = "Date", all.y = TRUE)[ ,"RegID"]
nm1 <- setdiff(intersect(names(a), names(b)), "Date")
merge(a, b[setdiff(names(b), nm1)], by "Date",
      all.y = TRUE)