我在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
包?
在?subset
文档中
子集:指示要保留的元素或行的逻辑表达式:缺失值被视为 false。
因此,在您的情况下,您需要将条件放在一起,如下所示
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)