首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择不同列的值不是R中的某个值的行

选择不同列的值不是R中的某个值的行
EN

Stack Overflow用户
提问于 2020-08-23 01:11:50
回答 2查看 40关注 0票数 0

我有6个不同的专栏: call_outcome_1 - call_outcome_6

每个值可以是0-5之间的值(0=caller可达、2=left消息等)。

我正在尝试选择这6列中没有一列=0的行(也就是,从未联系过此人)

但是,其中一些值是NA。例如,如果在第一个呼叫中联系到此人,则call_outcomes 2-6将为NA。

我试过了:

代码语言:javascript
复制
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:的新手。)

EN

回答 2

Stack Overflow用户

发布于 2020-08-23 03:30:32

你可以用下面的代码检查它是否与零不同,或者它是NA:

代码语言:javascript
复制
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))  )
票数 0
EN

Stack Overflow用户

发布于 2020-08-23 06:21:01

考虑这个简单的例子:

代码语言:javascript
复制
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

代码语言:javascript
复制
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              2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63538953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档