在R data.frame上有效地组合多个条件

时间:2017-03-24 02:01:21

标签: r dataframe indexing conditional-statements

我正在使用R中的数据框,并且经常在我的数据框架上使用很多条件,主要是&|运算符。我这样做是这样的:

df = data.frame("col1"=c("success", "failure", "success"), "col2"=c("success", "success", "failure"), "col3"=c(1,1,100))
#multiple conditions, option 1
df[(df[["col1"]]=="success") & (df[["col2"]]=="success") & (df[["col3"]] == 1), ]
#multiple conditions, option 2
df[which((df[["col1"]]=="success") & (df[["col2"]]=="success") & (df[["col3"]] == 1)),]

但是,我的表达方式往往很长很难以阅读。

  • 有更好,更易读的方法吗?
  • 编辑:最好,我想在没有外部库的基础R环境中工作。

我根据其他帖子将这些内容放在一起,关于not using subsetusing | correctly,但没有'找到解决这个问题的任何事情。

我希望这不是基于意见的,否则我会收回我的问题。谢谢!

2 个答案:

答案 0 :(得分:2)

一种选择是使用dplyr包中的filter()功能:

library(dplyr)
filter(df, col1=="success" & col2=="success" & col3==1)

您还可以使用逗号(相当于&)分隔多个参数:

filter(df, col1=="success", col2=="success", col3==1)

答案 1 :(得分:0)

试试这个:(可能不是笨拙但有同样的'&')

> df[df$col1=="success" & df$col2=="success" & df$col3==1,]
     col1    col2 col3
1 success success    1