【问题标题】:Using a filter function with two conditions and one of them is is.na使用具有两个条件的过滤器函数,其中一个是 is.na
【发布时间】:2017-05-17 18:25:44
【问题描述】:

假设我有一个这样的数据集:

id <- c(1, 2, 3, 4, 5,6)
number <- c(1, 4, 7, 4, NA, 4)
dat <- data.frame(id, number)

即,

    id  number
1   1   1
2   2   4 
3   3   7
4   4   4
5   5   NA
6   6   4

使用 dplyr 的过滤器函数,我可以只对数字大于 3 的行进行子集化:

dat.new <- filter(dat, number > 3)

   id   number
1   2   4
2   3   7
3   4   4
4   6   4

我还可以对缺少数字的行进行子集化:

dat.new <- filter(dat, is.na(number))

   id   number
1   5   NA

但是当我尝试包含数字为 NA 且大于 3 的行时,它不起作用。

dat.new <- filter(dat, is.na(number) || number > 3)

    id   number
No data available in table

发生了什么事?

【问题讨论】:

  • 替换||通过 |,它应该可以工作。

标签: r filter dplyr na


【解决方案1】:

问题是||操作员。 | (单)是或比较。详情请见https://www.r-bloggers.com/logical-operators-in-r/

【讨论】:

    【解决方案2】:
    dat.new <- filter(dat, is.na(number) | number > 3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2018-01-09
      • 2013-01-18
      相关资源
      最近更新 更多