R、 在if语句中处理NA以创建新的binaire变量,只是删除NA不是一个选项
我的数据有很多列和主题,但为了更简单地说明,让我们假设我有3个主题,有5个变量/列,称为x1、x2和x3、x4和x5。在我想要的分析中,重要的是我实际调用了我想要使用的列(因为我不能在分析中只使用整个dataframe,因为那里有更多的变量/列,变量/列(如x1和x5)我不想用于此特定任务,) 我的专栏的类是:characterR、 在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,
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)))