фильтровать строки, когда все столбцы больше значения - PullRequest
0 голосов
/ 11 июня 2018

У меня есть фрейм данных, и я хотел бы установить подмножества строк, в которых все значения столбцов соответствуют моему отсечению.

вот кадр данных:

   A B C
1  1 3 5
2  4 3 5
3  2 1 2

Я хотел бы выбрать строки, в которых все столбцы больше 2. Вторая строка - это то, что я хочу получить.

[1] 4 3 5

вот мой код:

 subset_data <- df[which(df[,c(1:ncol(df))] > 2),]

Но мой код применяется не ко всем столбцам.У вас есть идеи, как я могу это исправить.

1 Ответ

0 голосов
/ 11 июня 2018

Мы можем создать логическую матрицу, сравнив весь фрейм данных с 2, а затем выполнить rowSums над ним и выбрать только те строки, значение которых равно числу столбцов в df

df[rowSums(df > 2) == ncol(df), ]

#  A B C
#2 4 3 5

A dplyr подход с использованием filter_all и all_vars

library(dplyr) 
df %>%
 filter_all(all_vars(. > 2))

#  A B C
#1 4 3 5

An apply подход

df[apply(df > 2, 1, all), ]
...