如果列值与另一个向量中的列值匹配,则设置标志

car*_*yte 8 r

假设我有data.frame如下:

a <- data.frame(id=c(1,3,4,5,7,8,9,6,54,3,5,6,87,6))
Run Code Online (Sandbox Code Playgroud)

我有一个矢量temp如下:

temp<-c(1,3,5,9)
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个新的列flag到我的data.frame,它应该1在那里idtemp0别处.这是我试过的:

a$flag <- ifelse(a$id==temp, 1, 0)
Run Code Online (Sandbox Code Playgroud)

和期望的输出应该是(1,1,0,1,0,0,1,0,0,1,1,0,0,0).

但是从我上面的代码来看,flag没有得到正确的更新.我在这里错过了什么?可以/应该使用%in%吗?如果是这样,怎么样?

感谢您的任何帮助

ale*_*han 5

我认为这就是您要寻找的。您的制作方式存在两个问题data.frame

a <- data.frame(id = c(1,3,4,5,7,8,9,6,54,3,5,6,87,6),
                flag = 0)
Run Code Online (Sandbox Code Playgroud)

然后的更新值flag到1,其中idtemp,你可以使用索引这些值[和逻辑测试%in%,并为其指定1

a$flag[a$id %in% temp] <- 1

a
#    id flag
# 1   1    1
# 2   3    1
# 3   4    0
# 4   5    1
# 5   7    0
# 6   8    0
# 7   9    1
# 8   6    0
# 9  54    0
# 10  3    1
# 11  5    1
# 12  6    0
# 13 87    0
# 14  6    0
Run Code Online (Sandbox Code Playgroud)