为什么在使用merge和%in%时存在差异?
我有两个数据集,我想通过两个识别变量(up和ver_)进行合并: 我想做的是取出df2的一个子集,其中的up和ver_与df1中的匹配。我用了两种不同的方法,得到了不同的答案 第一种方法:为什么在使用merge和%in%时存在差异?,r,merge,subset,R,Merge,Subset,我有两个数据集,我想通过两个识别变量(up和ver_)进行合并: 我想做的是取出df2的一个子集,其中的up和ver_与df1中的匹配。我用了两种不同的方法,得到了不同的答案 第一种方法: pur <- merge(df2, df1,by=c("up","ver_u")) 使用merge和%in%是否存在系统性差异 如果您能对此有所了解,将不胜感激。因为merge正在逐行比较两列,而%中的%正在将一行与所有其他行进行比较。例如: #dummy data df1 <- data.fr
pur <- merge(df2, df1,by=c("up","ver_u"))
使用merge和%in%是否存在系统性差异
如果您能对此有所了解,将不胜感激。因为
merge
正在逐行比较两列,而%中的%正在将一行与所有其他行进行比较。例如:
#dummy data
df1 <- data.frame(x = c(1,2,3),
y = c(2,3,4))
df1
# x y
# 2 2 3
# 3 3 4
df2 <- data.frame(x = c(2,3,1,3),
y = c(3,1,4,1))
df2
# x y
# 1 2 3
# 2 3 1
# 3 1 4
# 4 3 1
# using merge
merge(df1, df2, by = c("x", "y"))
# x y
# 1 2 3
# using %in%
df1[(df1$x %in% df2$x) & (df1$y %in% df2$y), ]
# x y
# 2 2 3
# 3 3 4
#虚拟数据
df1是因为merge
对两列进行逐行比较,而%
中的%对一行与所有其他行进行比较。例如:
#dummy data
df1 <- data.frame(x = c(1,2,3),
y = c(2,3,4))
df1
# x y
# 2 2 3
# 3 3 4
df2 <- data.frame(x = c(2,3,1,3),
y = c(3,1,4,1))
df2
# x y
# 1 2 3
# 2 3 1
# 3 1 4
# 4 3 1
# using merge
merge(df1, df2, by = c("x", "y"))
# x y
# 1 2 3
# using %in%
df1[(df1$x %in% df2$x) & (df1$y %in% df2$y), ]
# x y
# 2 2 3
# 3 3 4
#虚拟数据
df1
pur1 = merge(test, df1,by=c("up","ver_u"))
#dummy data
df1 <- data.frame(x = c(1,2,3),
y = c(2,3,4))
df1
# x y
# 2 2 3
# 3 3 4
df2 <- data.frame(x = c(2,3,1,3),
y = c(3,1,4,1))
df2
# x y
# 1 2 3
# 2 3 1
# 3 1 4
# 4 3 1
# using merge
merge(df1, df2, by = c("x", "y"))
# x y
# 1 2 3
# using %in%
df1[(df1$x %in% df2$x) & (df1$y %in% df2$y), ]
# x y
# 2 2 3
# 3 3 4