Бостонский набор данных, несколько фильтров на основе значений

Я начинающий. Я работал с бостонским набором данных в пакете MASS. Я хотел применить фильтр для получения записей, в которых значение переменной «час» равно 1/ИСТИНА, а значение переменной «возраст» больше 50,0.

Я попытался :

> boston2<-subset(Boston, chas>0, age>50.0)
> boston2

Результат, который я получил: фрейм данных с 0 столбцами и 35 строками.

Однако я хотел, чтобы во фрейме данных были все записи, где час истинен, а возраст больше 50.

Какие альтернативные методы я могу использовать? И как мне расширить фильтрацию до 3/4/любого количества переменных.


person vagabond    schedule 19.02.2014    source источник


Ответы (1)


Вам нужно связать разные критерии, используя различные логические операторы:

subset(Boston, chas > 0 & age > 50.0)

Прочтите ?Logic, чтобы узнать больше.

В документации для subset указано, что второй аргумент, subset, должен быть одним логическим выражением. Когда вы разделяете их запятыми, R интерпретирует их как совершенно разные аргументы, а не как одно выражение.

Ваша попытка эквивалентна:

subset(Boston, subset = chas > 0, select = age > 50.0)

поэтому вы получаете «все строки, но без столбцов».

person joran    schedule 19.02.2014
comment
Понятно. Я изучу все логические операторы, которые будут использоваться внутри функций. Спасибо! Я также читал, что подмножество может быть не лучшим способом, и использование [ или [[ — лучшая идея, особенно при написании программ. Есть ли альтернативный подход, который можно использовать для решения этой проблемы? - person vagabond; 19.02.2014