df[-which(apply(df, 1, function(x) sum(x > 30) > 8)),]
Чтобы проиллюстрировать, как (и что) это работает, рассмотрим следующий кадр данных:
set.seed(1111)
df <- data.frame(replicate(5,sample(0:50,5,rep=TRUE)))
df
X1 X2 X3 X4 X5
1 23 49 0 8 8
2 21 44 38 46 21
3 46 5 38 28 42
4 6 27 32 45 50
5 37 7 44 39 3
Здесь вторая строка имеет значения> 20 в более чем 4 строках. Чтобы удалить эту строку, необходимо вычесть (-
) из df
этих строк в which
, а число столбцов, в которых значения больше 20, превышает 4:
df[-which(apply(df, 1, function(x) sum(x > 20) > 4)),]
X1 X2 X3 X4 X5
1 23 49 0 8 8
3 46 5 38 28 42
4 6 27 32 45 50
5 37 7 44 39 3
Et voilá, второй строки были удалены.