如何使用for和If来比较两个数据帧?
我想比较数据帧中的变量“Name”,如果值相同,则打印该值,这就是我要做的:如何使用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
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以避免将名称视为因子
xintersect(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,非常有用