Как использовать вектор при индексации столбцов? - PullRequest
0 голосов
/ 26 мая 2019

Итак, в принципе, у меня есть вектор:

Обратите внимание, что thetitanic - это набор данных людей, которые посещали Титаник.

femalesurvivors_1 <- thetitanic[(thetitanic$Sex=="female") & (thetitanic$Survived==1) & (thetitanic$PClass=="1st"),]

Здесь показаны выжившие женщины 1-го класса. Однако сейчас мне нужны только выжившие женщины 1-го класса, которые старше 18 лет. Итак:

Я хочу также индексировать (thetitanic$Sex>=18)

Я пробовал некоторые формы кода, но продолжаю получать ошибки. x <- thetitanic[(femalesurvivors_1) & (thetitanic$Age>=18)]

Ошибка показывает: 1: В Ops.factor (слева, справа): '&' не имеет значения для факторов

Могу ли я пройти через вектор при выполнении? Или мне нужно создать новый вектор и повторить код?

Я пытаюсь вернуть значение выживших женщин 1-го класса, которые старше 18 лет.

Я нуб .. Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Опция с data.table

library(data.table)
nrow(setDT(thetitanic)[Survived == 1 & Sex == "Female" & Pclass == 1 & Age >= 18])
0 голосов
/ 26 мая 2019

Вы можете создать логический вектор условий и взять за него sum.

sum(with(thetitanic, 
    Survived == 1 & Sex == "female" & Pclass == 1 & Age >= 18), na.rm = TRUE)

Использование subset

nrow(subset(thetitanic, Survived == 1 & Sex == "female" & Pclass == 1 & Age >= 18))

Или с dplyr, используя filter

library(dplyr)

thetitanic %>%
  filter(Survived == 1 & Sex == "female" & Pclass == 1 & Age >= 18) %>%
   nrow

Возвращает число выживших женщин 1-го класса в возрасте старше 18 лет. Если вы хотите эти записи, удалите функции nrow из filter и subset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...