как написать сложную побочную функцию в г - PullRequest
0 голосов
/ 18 января 2019

моя база данных:

Time      Sex   Weight  Time.midnight
0005       1    3837       5
0104       1    3334      64
0118       2    3554      78
0155       2    3838     115
0257       2    3625     177
0405       1    2208     245
0407       1    1745     247
0422       2    2846     262
0431       2    3166     271
0708       2    3520     428
0735       2    3380     455
0812       2    3294     492
0814       1    2576     494

, которое содержит время рождения, пол и вес при рождении для детей, родившихся в течение одного 24-часового периода в больнице. Переменные следующие:

Время: время рождения, записанное на 24-часовых часах /. Пол: пол ребенка (1 = девочка, 2 = мальчик) / Вес: вес при рождении в граммах / Time.midnight: количество минут после полуночи каждого рождения

Теперь я хочу подсчитать, какова доля девушек с весом менее 3 кг? Сравните с соответствующей пропорцией для мальчиков?

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

by(Weight, Sex, length(which(Weight<3000)))

Не могли бы вы, пожалуйста, руководство?

1 Ответ

0 голосов
/ 18 января 2019

Вы можете сделать следующее

by(df, df$Sex, function(x) sum(x$Weight < 3000) / length(x$Weight))
#df$Sex: 1
#[1] 0.6
#------------------------------------------------------------
#df$Sex: 2
#[1] 0.125

Или вместо by вы также можете использовать tapply, который возвращает именованный numeric вектор

with(df, tapply(Weight, Sex, function(x) sum(x < 3000) / length(x)))
#    1     2
#0.600 0.125

Пример данных

df <- read.table(text =
    "Time      Sex   Weight  Time.midnight
0005       1    3837       5
0104       1    3334      64
0118       2    3554      78
0155       2    3838     115
0257       2    3625     177
0405       1    2208     245
0407       1    1745     247
0422       2    2846     262
0431       2    3166     271
0708       2    3520     428
0735       2    3380     455
0812       2    3294     492
0814       1    2576     494", header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...