иметь дело с NA при использовании tapply

Рассмотрим следующий пример:

Factor <- c(rep('Male', 10),rep('Female', 10))
Age <- sample(30:80,20)

df1 <- data.frame(Factor, Age)

with(df1, tapply(Age, Factor, mean))

Последняя команда дает нам средний возраст для обоих полов. Теперь предположим, что один вход помечен NA. Как мы можем решить эту проблему?

df1$Age[15] <- NA
with(df1, tapply(Age, Factor, mean))

person user08041991    schedule 19.01.2017    source источник


Ответы (1)


Вы можете передать аргументы функции, используемой в tapply, в данном случае mean.

Если вы посмотрите на ?mean, вы увидите, что по умолчанию для mean используется na.rm = False. Просто измените его:

tapply(df1$Age, df1$Factor, mean, na.rm = T)

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

with(df1, tapply(Age, Factor, mean, na.rm = T))
person Paulo MiraMor    schedule 19.01.2017