Что не так с моими кодами подмножеств, чтобы фильтровать мой фрейм данных на основе определенных значений из 2 столбцов?

У меня есть фрейм данных в R называется dd1 и он содержит около 20 столбцов. Я пытаюсь создать новый фрейм данных под названием dd2 который будет содержать записи из dd1Отфильтрованы по этим критериям:

 (1) where column UseFor = "ML"
 (2) where column Attrition = "Yes"

Мой код выглядит следующим образом:

dd2<-(subset(dd1,UseFor %in% c("ML"), Attrition %in% c("Yes")))

Моя проблема в том, что я получаю фрейм данных (dd2) который пуст.

Что не так с моим subset коды? Есть ли более простой способ добиться того, чего я хочу, может быть с dplyr пакет?

1 ответ

Решение

В ?subset документация

подмножество: логическое выражение, указывающее элементы или строки для сохранения: пропущенные значения принимаются как ложные.

Таким образом, в вашем случае вам нужно составить условия следующим образом

subset(dd1,UseFor %in% c("ML") & Attrition %in% c("Yes"))
   User UseFor Attrition
1    A     ML       Yes
4    B     ML       Yes  

Тем не менее, я думаю, что вы запутались между subset а также dplyr::filter, который работает следующим образом

library(dplyr)
filter(dd1,UseFor %in% c("ML"),Attrition %in% c("Yes"))
   User UseFor Attrition
1    A     ML       Yes
2    B     ML       Yes

данные

dd1 <- read.table(text = "
   User  UseFor Attrition  
A  ML Yes   
B  ML No  
A  AL Yes   
B  ML Yes  

",header=T)
Другие вопросы по тегам