假设我有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在那里id是temp和0别处.这是我试过的:
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%吗?如果是这样,怎么样?
感谢您的任何帮助
我认为这就是您要寻找的。您的制作方式存在两个问题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,其中id是temp,你可以使用索引这些值[和逻辑测试%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)
| 归档时间: |
|
| 查看次数: |
7738 次 |
| 最近记录: |