我有一个小问题,或者实际上有点大。 我有一个包含3个变量的数据集,我使用atm,让我们称之为var1,var2和var3。 总的来说,我在每个变量中都有超过3000个带有NA值的观测值。
var1 = age_1,var2 =是/否和var3 = age_2
我想做的是如果var2 ="是" var1的值应该合并到var3中。 我这样做了:
var3[var2=="Yes"]<-var1
但我收到错误消息:
Error in var3[var2 == "Yes"] <-var1 :
下属作业中不允许使用NA
有人能快速解决这个问题吗?
答案 0 :(得分:2)
你可以尝试
var3 <- ifelse(var2 == "Yes", var1, var3)
答案 1 :(得分:2)
错误听起来好像NA
中有var2
个值。您可以进行测试,看看是否sum(is.na(var))>0
因此,如果您有缺失值,则R不想猜测丢失是否与&#34相同;是&#34;或&#34;否&#34;所以你得到错误。
此外,通过仅对作业的一侧编制索引,您不必跨行匹配值。因此,即使您修正了NA值,也可能会导致number of items to replace is not a multiple of replacement length
错误。
一个技巧是使用which
从逻辑索引中删除NA
值并将它们转换为数字索引。然后,一旦知道要替换的行,就可以在赋值的两端使用相同的索引。
idx <- which(var2=="Yes")
var3[idx] <- var1[idx]
或者您可以使用ifelse
功能,使所有这些步骤更加轻松
var3<-ifelse(var2=="Yes", var1, var3)