我想知道如何通过两列(一个是字符串,一个是数字)对数据帧进行子集化(或过滤),仅包括满足两个条件的结果,而不是一个或另一个。
如果我使用&运算符,它返回满足任一条件的数据。
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,它将如何获得所有结果?
如果这是您建议的路线,我可以使用sqldf
或dplyr
。欢迎任何其他替代方案。
答案 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