#r #function #dplyr
#r #функция #dplyr
Вопрос:
Я пытаюсь написать функцию, которая вычисляет коэффициенты шансов. Функция должна принимать в качестве аргумента фрейм данных с тремя переменными («женский», «мужской» и «n») и четырьмя наблюдениями и возвращать отношение шансов.
df <- data.frame(female = c("White", "White", "non-White", "non-White"),
male = c("White", "non-White", "White", "non-White"),
n = c(85, 5, 5, 10))
# data represented as a table
xtabs(n ~ female male, df)
# the odds ratio here is:
(85 * 10) / (5 * 5)
#34
MyoddsRatio <- function(df){
df <- df %>%
mutate(oddsratio = (n[1]) * n[4])/(n[2] * n[3]))
return(df)
}
Чтобы проверить, работает ли функция, я хотел бы, чтобы она возвращала коэффициент нечетности, равный 34.
Комментарии:
1. Скобка
)
послеn[1]
не требуется.oddsratio
Здесь вы создаете столбец и возвращаете его целикомdata.frame
. Я думаю, достаточно одного значения.2. Если вы не хотите размещать вопрос онлайн, пожалуйста, не делайте этого. Прямо сейчас нет способа удалить ее, если только ответчик не удалит свой ответ.
Ответ №1:
Если ваш фрейм данных всегда будет в этом формате, вы можете использовать summarise
library(dplyr)
MyoddsRatio <- function(df) {
df %>%
summarise(oddsratio = (n[1] * n[4]) / (n[2] * n[3]))
}
MyoddsRatio(df)
oddsratio
1 34