Извлечение значений на основе другого столбца - PullRequest
0 голосов
/ 08 июня 2018

У меня есть эти данные в R.

Stops   Reasons
1       Pollution
NA      Pesticide
NA      Pesticide
0       NA
0       NA

Я хочу извлечь значения столбца Причины, основываясь на столбце Остановки (если это 1).Но когда я делаю это, это также извлекает значения Причин, где Остановки имеют НС.

Итак, я получаю

Reasons
Pollution
Pesticide
Pesticide

Но я хочу только

Reasons
Pollution

Я сделал это

reasons=dataW$Reason[dataW$Stops==1]

или

reasons= dataW[dataW$Stops==1, "Reasons"]

Но я не знаю, чего еще не хватает.Вы можете мне помочь?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Один из способов исключить 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"
0 голосов
/ 08 июня 2018

Это может быть связано с элементами NA, которые возвращают NA с ==.Мы можем использовать %in%

dataW$Reason[dataW$Stops %in% 1]
#[1] "Pollution"

Или использовать is.na для исправления кода ОП

dataW$Reason[dataW$Stops == 1 & !is.na(dataW$Stops)]
#[1] "Pollution"

data

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...