首页 > 解决方案 > 如何过滤 2016 年总统选举数据以包含具有 NA 的条目,同时满足其他条件?

问题描述

所以我使用 dplyr 包来过滤 2016 年美国总统大选数据(in dslabs),使其满足以下条件:

  1. 州 == 美国
  2. 2016-10-31 之后的结束日期
  3. 成绩高于 B,但包括成绩为 NA 的条目

这是我现在拥有的代码:

library(dplyr)
library(dslabs)
polls <- polls_us_election_2016 %>% filter(state == "U.S." & enddate >= "2016-10-31"&
                                       grade %in% c("A+", "A", "A-", "B+") | 
                                         is.na(grade))

但此代码最终包含不满足前 2 个条件的成绩为 NA 的条目。如何确保仅包含满足前 2 个条件的条目?

标签: rdplyr

解决方案


您需要将日期与日期对象而不是字符串进行比较,并将条件grade分开。

library(dplyr)
library(lubridate)
library(dslabs)

polls_us_election_2016 %>%
  filter(state == "U.S." & enddate > ymd('2016-10-31') & 
        (grade %in% c("A+", "A", "A-", "B+") | is.na(grade)))

或者在基础 R

subset(polls_us_election_2016, state == "U.S." & enddate > as.Date('2016-10-31') & 
         (grade %in% c("A+", "A", "A-", "B+") | is.na(grade)))

推荐阅读