我正在尝试创建一个值为" 1"的新变量。如果一个不同的变量有任何数字,并且" 0"如果另一个变量有" NA。"所以变量的值有3,NA,1,2,NA,我想要一个新的变量,即1,0,1,1,0。
我尝试使用ifelse,它将数字转换为1,但所有的NA仍然是NA。
mydata$variable_presence <- ifelse(mydata$old_variable > 0, 1, 0)
我也尝试过测试NA,但这只是一个错误。 (我真的没想到会这样,但我想我应该试试。)
mydata$variable_presense <- ifelse(mydata$old_variable = NA, 0, 1)
有什么建议吗?谢谢!我猜这很简单,但我最近才开始学习R.
答案 0 :(得分:4)
简单is.na()
功能可以。
R中的布尔(逻辑)可以很容易地被强制转换为二进制(如果为真则为1,如果为假则为0)。
data = c(3, NA, 1, 2, NA)
as.numeric(!is.na(data))
将完成这项工作。