我在R中有这个数据。
Stops Reasons
1 Pollution
NA Pesticide
NA Pesticide
0 NA
0 NA
我想根据列Stops(当此值为1时)提取列Reasons的值。但是,当我这样做时,它也提取原因的值,其中Stops具有NA。
所以我得到了
Reasons
Pollution
Pesticide
Pesticide
但我只想要
Reasons
Pollution
我做了这个
reasons=dataW$Reason[dataW$Stops==1]
或
reasons= dataW[dataW$Stops==1, "Reasons"]
但我不知道还缺少什么。 你能救我吗?
谢谢。
答案 0 :(得分:0)
可能是由于NA
元素返回带有==
的NA。我们可以使用%in%
dataW$Reason[dataW$Stops %in% 1]
#[1] "Pollution"
或使用is.na
修复OP的代码
dataW$Reason[dataW$Stops == 1 & !is.na(dataW$Stops)]
#[1] "Pollution"
dataW <- structure(list(Stops = c(1L, NA, NA, 0L, 0L), Reasons = c("Pollution",
"Pesticide", "Pesticide", NA, NA)), .Names = c("Stops", "Reasons"
), row.names = c(NA, -5L), class = "data.frame")
答案 1 :(得分:0)
在子集化时使用NA
函数排除subset
的一种方法
subset(dataW, Stops == 1)$Reasons
输出比较
dataW <- data.table::fread("
Stops Reasons
1 Pollution
NA Pesticide
NA Pesticide
0 NA
0 NA
", data.table = F)
dataW$Reason[dataW$Stops == 1]
# [1] "Pollution" NA NA
subset(dataW, Stops == 1)$Reasons
# [1] "Pollution"