как применить функция tapply?
есть датафрейм, и при помощи функции tapply надо вывести среднее число женщин по странам за все года, но что бы я не вставляла в аргументы tapply выходит совсем не то, что надо
DL <- data.frame(time = c("1", "1", "1", "1", "1","1", "2","2","2","2","2","2"),
country = c("Spain", "Spain","Spain","Germany", "Germany", "Germany","Spain","Spain","Spain","Germany","Germany","Germany"),
sex = c("Total", "Females", "Males","Total", "Females", "Males","Total", "Females", "Males","Total", "Females", "Males"),
values = c("10000", "5000", "5000", "15000", "9000", "6000", "11000", "6000", "5000", "14000", "8500", "5500")
)
что мне стоит вставить в аргументы функции? я окончательно запуталась
Ответы (1 шт):
Автор решения: aleksandr barakin
→ Ссылка
у вас тут получаются две проблемы, одна следует из другой:
- вместо чисел в переменную values были записаны строки
- при создании таблицы функцией
data.frame()эта переменная (именно из-за того, что в ней содержатся строки) была преобразована в факторную.
возможны как минимум три выхода:
преобразовывать «на лету», во время вызова функции
tapply()tapply(as.numeric(as.character(DL$values)), DL$sex, mean) #> Females Males Total #> 7125 5375 12500преобразовать уже созданную факторную переменную в числовую:
DL$values=as.numeric(as.character(DL$values)) tapply(DL$values, DL$sex, mean) #> Females Males Total #> 7125 5375 12500создавать изначально числовую переменную (
values = c(10000, 5000, ...). тогда можно будет применить функциюtapply()без дополнительных преобразований:DL <- data.frame(time = c("1", "1", "1", "1", "1","1", "2","2","2","2","2","2"), country = c("Spain", "Spain","Spain","Germany", "Germany", "Germany","Spain","Spain","Spain","Germany","Germany","Germany"), sex = c("Total", "Females", "Males","Total", "Females", "Males","Total", "Females", "Males","Total", "Females", "Males"), values = c(10000, 5000, 5000, 15000, 9000, 6000, 11000, 6000, 5000, 14000, 8500, 5500) ) tapply(DL$values, DL$sex, mean) #> Females Males Total #> 7125 5375 12500
Created on 2021-05-23 by the reprex package (v0.2.1)