我有以下数据集:
Class AC
eval 0.6
period 0.39
eval 0.0
generator 0.0
period 0.58
period 0.0
generator 0.0
eval 0.97
generator 0.0
我想检索所有行中AC
为零的类。根据前面的示例,应检索类generator
,因为其AC
始终为零。
当我尝试以下命令subset(dataset, AC == 0)
时,检索了所有我不想要的类。
答案 0 :(得分:2)
这里有几种可能性。
基本R
i <- as.logical(with(dataset, ave(AC, Class, FUN = function(x) all(x == 0))))
dataset[i, ]
# Class AC
#4 generator 0
#7 generator 0
#9 generator 0
就是Class
。
j <- with(dataset, tapply(AC, Class, FUN = function(x) all(x == 0)))
names(j)[j]
#[1] "generator"
还有一个dplyr
解决方案。
library(dplyr)
dataset %>%
group_by(Class) %>%
filter(all(AC == 0))
## A tibble: 3 x 2
## Groups: Class [1]
# Class AC
# <fct> <dbl>
#1 generator 0
#2 generator 0
#3 generator 0
数据。
dataset <- read.table(text = "
Class AC
eval 0.6
period 0.39
eval 0.0
generator 0.0
period 0.58
period 0.0
generator 0.0
eval 0.97
generator 0.0
", header = TRUE)
答案 1 :(得分:1)
仅使用filter,选择所有非零的项目类别,然后再次使用%in%
过滤器
dataset[!dataset$Class%in%dataset$Class[dataset$AC!=0],]
Class AC
4 generator 0
7 generator 0
9 generator 0