Создание функции для вычисления oddsratios

#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