Пользовательская функция с использованием пакета Stringr и фигурных скобок

Я провожу систематический обзор и имею набор исследований, содержащих как среднее значение (SD), так и медиану (IQR). Я пытаюсь создать функцию для преобразования медианы (IQR) в среднее значение (SD) с помощью метода Вана (2014). Я пометил медианные данные как "число" m (например, 34m), а IQR — это диапазон (например, 16-45).

Вот набор данных:

Я могу вычислить как среднее значение, так и sd из медианы и IQR (с использованием метода Вана) со следующим синтаксисом:

Я пытаюсь обернуть это в функцию для дополнительных групп вмешательства:

Когда я пытаюсь использовать функцию:

Я постоянно получаю ошибку:

Я знаю, что это, вероятно, что-то простое, но ваша помощь была бы очень признательна.

Ура, Бен

library(tidyverse)

data <- tibble(
  study = c(1,2,3),
  age_median = c(52m, 42m, 69m),
  age_iqr = c("18-74", "38-55", "60-91")
  number = c(65,30,45)
)
# Calculate Age Mean from Median
data <- data |> 
  separate_wider_delim(age_median, "m", names = c("age_median", NA)) |> 
  separate_wider_delim(age_iqr, "-", names = c("age_iqr_low", "age_iqr_high"), too_few = "debug") |> 
  mutate_at(c("age_median", "age_iqr_low", "age_iqr_high"), as.numeric) |> 
  mutate(age_mean = (age_median + age_iqr_low + age_iqr_high)/3)

# Calculate Age SD from IQR
data <- data |> 
  mutate(age_sd = (age_iqr_high- age_iqr_low)/(2*qnorm((0.75*number - 0.125)/( number+ 0.25), 0,1)))

# Function to convert median into mean
med_to_mean <- function(median_col, iqr_col){
  data |> 
  separate_wider_delim({{median_col}}, "m", names = c("median_col", NA)) |> 
  separate_wider_delim({{iqr_col}}, "-", names = c("iqr_col_low", "iqr_col_high"), too_few = "debug") |> 
  mutate_at(c("{{median_col}}", "iqr_col_low", "iqr_col_high"), as.numeric) |> 
  mutate({{median_col}} = (median_col + iqr_col_low + iqr_col_high)/3)

return({{median_col}})

# Calculate Age SD from IQR
data <- data |> 
  mutate({{IQR_col}} = (iqr_col_high- iqr_col_low)/(2*qnorm((0.75*number - 0.125)/( number+ 0.25), 0,1)))

return({{iqr_col}})
}
data <- data |> med_to_mean(age_median, age_iqr)
Error in med_to_mean(age_median, age_iqr) : 
  unused argument (age_iqr)

Лазарь
Вопрос задан21 июня 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.