我有6个不同的专栏: call_outcome_1 - call_outcome_6
每个值可以是0-5之间的值(0=caller可达、2=left消息等)。
我正在尝试选择这6列中没有一列=0的行(也就是,从未联系过此人)
但是,其中一些值是NA。例如,如果在第一个呼叫中联系到此人,则call_outcomes 2-6将为NA。
我试过了:
not_interviewed=data %>%
filter(call_outcome_1 !=0 & call_outcome_2!=0 & call_outcome_2 !=0 & call_outcome_3 !=0 & call_outcome_4 !=0 & call_outcome_5 !=0 & call_outcome_6 !=0) %>%
select(record_id)
not_interviewed这为我提供了记录,其中所有6次呼叫尝试都已填写(没有NAs),并且没有一个是0。它排除了任何结果都有NA值的记录。我已经尝试了na.rm=FALSE,但得到一个错误。任何帮助都将不胜感激,我是R:的新手。)
发布于 2020-08-23 03:30:32
你可以用下面的代码检查它是否与零不同,或者它是NA:
filter( (call_outcome_1 !=0 |is.na(call_outcome_1)==TRUE) & (call_outcome_2 !=0 |is.na(call_outcome_2)==TRUE) ...continue... & (call_outcome_6 !=0 |is.na(call_outcome_6)==TRUE)) )发布于 2020-08-23 06:21:01
考虑这个简单的例子:
data <- data.frame(a = 1:5, call_outcome_1 = c(0, NA, 1, 2, 0),
call_outcome_2 = c(NA, 2, 1, 2, 3))
data
# a call_outcome_1 call_outcome_2
#1 1 0 NA
#2 2 NA 2
#3 3 1 1
#4 4 2 2
#5 5 0 3要选择任何值都不为0的行,可以使用rowSums
cols <- grep('call_outcome', names(data))
data[rowSums(data[cols] == 0, na.rm = TRUE) == 0, ]
# a call_outcome_1 call_outcome_2
#2 2 NA 2
#3 3 1 1
#4 4 2 2https://stackoverflow.com/questions/63538953
复制相似问题