如何使用for和If来比较两个数据帧?

如何使用for和If来比较两个数据帧?,r,for-loop,if-statement,R,For Loop,If Statement,我想比较数据帧中的变量“Name”,如果值相同,则打印该值,这就是我要做的: x <- data.frame("SN" = 1:4, "Age" = c(21,15,30,40), "Name" = c("Isa","Dora","Luisa","Daniela")) x y <- data.frame("SN" = 1:4, "Age" = c(22,17,36,41), "Name" = c("Isa","Cristian","Peter","Juan")) y y$Name

我想比较数据帧中的变量“Name”,如果值相同,则打印该值,这就是我要做的:

x <- data.frame("SN" = 1:4, "Age" = c(21,15,30,40), "Name" = c("Isa","Dora","Luisa","Daniela"))
x

y <- data.frame("SN" = 1:4, "Age" = c(22,17,36,41), "Name" = c("Isa","Cristian","Peter","Juan"))
y

y$Name

i

for (i in "y$Name"){
  if (i = "x$Name" ){
    print(i)
  }
 next
}

x通常,处理此类问题的正确方法是通过
merge
或join语义:

# added stringsAsFactors=FALSE to avoid treating names as factors
x <- data.frame("SN" = 1:4, 
                "Age" = c(21,15,30,40), 
                "Name" = c("Isa","Dora","Luisa","Daniela"),
                stringsAsFactors = FALSE)
y <- data.frame("SN" = 1:4, 
                "Age" = c(22,17,36,41), 
                "Name" = c("Isa","Cristian","Peter","Juan"),
                stringsAsFactors = FALSE)
z <- merge(x, y, by="Name")[["Name"]]
z
[1] "Isa"
#添加了stringsAsFactors=FALSE以避免将名称视为因子

x
intersect(x=x$Name,y=y$Name)
使用for循环:
for(y$Name中的i){if(i%in%x$Name){print(i)}}
。从for序列的第一行中删除引号,并将if条件替换为if(x$name[i]==y$name[i])
。这是一个逐行比较,而不是当前答案或评论给出的结果。可以缩短为
x$name[x$name==y$name]
Thank's,非常有用