r语言 - 我的子集代码根据 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包?

?subset文档中

子集:指示要保留的元素或行的逻辑表达式:缺失值被视为 false。

因此,在您的情况下,您需要将条件放在一起,如下所示

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

但是,我认为您在subsetdplyr::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)

最新更新