Что не так с моими кодами подмножеств, чтобы фильтровать мой фрейм данных на основе определенных значений из 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)