R、 在if语句中处理NA以创建新的binaire变量,只是删除NA不是一个选项

R、 在if语句中处理NA以创建新的binaire变量,只是删除NA不是一个选项,r,if-statement,na,R,If Statement,Na,我的数据有很多列和主题,但为了更简单地说明,让我们假设我有3个主题,有5个变量/列,称为x1、x2和x3、x4和x5。在我想要的分析中,重要的是我实际调用了我想要使用的列(因为我不能在分析中只使用整个dataframe,因为那里有更多的变量/列,变量/列(如x1和x5)我不想用于此特定任务,) 我的专栏的类是:character data <- data.frame(id=c(1,2,3,4), x1=c('frhd', 'rthd','rthj','rtrp'), x2=c(5,1,4,

我的数据有很多列和主题,但为了更简单地说明,让我们假设我有3个主题,有5个变量/列,称为x1、x2和x3、x4和x5。在我想要的分析中,重要的是我实际调用了我想要使用的列(因为我不能在分析中只使用整个dataframe,因为那里有更多的变量/列,变量/列(如x1和x5)我不想用于此特定任务,) 我的专栏的类是:character

data <- data.frame(id=c(1,2,3,4), x1=c('frhd', 'rthd','rthj','rtrp'), x2=c(5,1,4, NA), 
                  x3=c(4,1,NA, NA), x4=c(3, NA,NA, NA), x5 = c('blae', 'blq', 'ctli', 'wrrv'))

    id   x1     x2  x3  x4  x5
    1   frhd    5   4   3   blae
    2   rthd    1   1   NA  blq
    3   rthj    4   NA  NA  ctli
    4   rtrp    NA  NA  NA  wrrv

data我们可以使用
apply
函数和一些逻辑表达式。我们使用
apply(…,1,…)
在数据行上循环(并且只选择我们感兴趣的列)。然后,我们检查每一行的所有值是否都是
NA
,如果是,我们返回
NA
,否则我们检查值
4
是否出现在任何列中

apply(data[,c("x2", "x3","x4")], 1, 
      FUN = function(x) as.numeric(ifelse(all(is.na(x)), NA, 4 %in% x)))

# [1]  1  0  1 NA
请注意,
x2
x3
x4
中的数据似乎是数字。如果它确实是一个字符值,则只需将
4
括在引号中(
“4”
):


我们可以使用
apply
函数和一些逻辑表达式。我们使用
apply(…,1,…)
在数据行上循环(并且只选择我们感兴趣的列)。然后,我们检查每一行的所有值是否都是
NA
,如果是,我们返回
NA
,否则我们检查值
4
是否出现在任何列中

apply(data[,c("x2", "x3","x4")], 1, 
      FUN = function(x) as.numeric(ifelse(all(is.na(x)), NA, 4 %in% x)))

# [1]  1  0  1 NA
请注意,
x2
x3
x4
中的数据似乎是数字。如果它确实是一个字符值,则只需将
4
括在引号中(
“4”
):

apply(data[,c("x2", "x3","x4")], 1, 
      FUN = function(x) as.numeric(ifelse(all(is.na(x)), NA, "4" %in% x)))