2013-02-25 5 views
4

Я просмотрел существующее подмножество Q & A на этом сайте и не смог найти то, что искал.Подмножество dataframe на основе одного условия, применяемого к нескольким столбцам

Я хочу подмножить фрейм данных на основе одного условия (например, если значение меньше 5). Тем не менее, мне нужны только строки, где значение во всех столбцах ниже 5.

Например, используя набор данных iris - я хотел бы выбрать все строки, в которых столбцы 1-3 имеют значения ниже 5.

subdata <- iris[which(iris[,1:3]<5),] 

Это не делает это для меня. Я получаю много строк NA в нижней части данных подмножества.

Любая помощь очень ценится!

ответ

10

Попробуйте

subdata <- iris[apply(iris[,1:3] < 5, 1, all),] 
+0

из интереса, что делает '1' делать между' <5' и 'all'? – JPD

+2

Он сообщает 'apply' для запуска функции' all' (которая в основном является логической И) для каждой строки 'iris [, 1: 3] <5'. См. '? Apply' - это очень полезно в' R'. – QkuCeHBH

Смежные вопросы