我有两个变量A和B
a b
234323432 NA
234324343 NA
238432788 NA
6786686 576575
97892734 NA
87236488 NA
234683246 NA
我希望用b替换b为NA 我试过
la2$b[is.na(la2$b)] <- la2$a
前三个NA被正确替换,但在第四行之后,第五行b被第四行替换为a。是否有任何特定原因导致错误更换。
a b
234323432 234323432
234324343 234324343
238432788 238432788
6786686 576575
97892734 6786686
87236488 97892734
234683246 87236488
预期产量低于
a b
234323432 234323432
234324343 234324343
238432788 238432788
6786686 576575
97892734 97892734
87236488 87236488
234683246 234683246
答案 0 :(得分:3)
要匹配两个向量的索引,您可以尝试
la2$b[is.na(la2$b)] <- la2$a[is.na(la2$b)]
# a b
#1 234323432 234323432
#2 234324343 234324343
#3 238432788 238432788
#4 6786686 576575
#5 97892734 97892734
#6 87236488 87236488
#7 234683246 234683246
如果计算时间很重要(在大数据集的情况下),最好计算一次索引并将它们存储在向量idx
中,如@docendodiscimus指出的那样。
idx <- is.na(la2$b)
la2$b[idx] <- la2$a[idx]
数据强>
la2 <- structure(list(a = c(234323432L, 234324343L, 238432788L, 6786686L,
97892734L, 87236488L, 234683246L), b = c(NA, NA, NA, 576575L,
NA, NA, NA)), .Names = c("a", "b"), class = "data.frame",
row.names = c(NA, -7L))