字符串和数字子集数据框,而不是或

时间:2016-08-29 14:45:08

标签: r dataframe filtering subset

我想知道如何通过两列(一个是字符串,一个是数字)对数据帧进行子集化(或过滤),仅包括满足两个条件的结果,而不是一个或另一个。

如果我使用&运算符,它返回满足任一条件的数据。

data(iris)

foo <- iris[which(iris$Petal.Length > 1.2 & iris$Species != "setosa"),]

这仅返回高于1.2的versicolor和virginica结果,而不是高于1.2的setosa结果。 如果花瓣长度超过1.2并且如果它低于1.2并且是setosa,它将如何获得所有结果?

如果这是您建议的路线,我可以使用sqldfdplyr。欢迎任何其他替代方案。

2 个答案:

答案 0 :(得分:2)

我们可以尝试

library(data.table)
as.data.table(iris)[Species == "setosa" & Petal.Length> 1.2| 
                         Species != "setosa" & Petal.Length > 1.2]

dplyr

iris %>%
     filter(Species == "setosa" & Petal.Length > 1.2 |
             Species != "setosa" & Petal.Length > 1.2)

答案 1 :(得分:0)

试一试

function markActiveDbSync(taskId) {
    return function(dispatch, getState) {
        dispatch(markTaskAsActive(taskId));
        // redux store state updated properly, now you are good to go to sync with your DB
        saveDataToDb(getState());
     }
}

这将返回花瓣长度> 1的所有观察结果。 1.2和物种不是Setosa