使用具有两个条件的过滤器函数,其中之一是 is.na
Using a filter function with two conditions and one of them is is.na
假设我有这样的数据集:
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
这是怎么回事?
问题是||操作员。 | (单)是或比较。有关详细信息,请参阅 https://www.r-bloggers.com/logical-operators-in-r/。
dat.new <- filter(dat, is.na(number) | number > 3)
假设我有这样的数据集:
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
这是怎么回事?
问题是||操作员。 | (单)是或比较。有关详细信息,请参阅 https://www.r-bloggers.com/logical-operators-in-r/。
dat.new <- filter(dat, is.na(number) | number > 3)