Я пытаюсь суммировать несколько столбцов, используя summarize_at()
с пользовательской функцией. Часть, на которой я застрял, - это функция ssmd()
, предназначенная для получения вектора значений из группы, установленной group_by()
, и другого вектора значений вне этой группы.
В приведенном ниже примере x
должен быть вектором для каждого набора значений на Month
(зависит от текущей группы), а y
должен быть фиксированным набором значений для Month == 5
.
# custom function
ssmd <- function(x, y){
(mean(x, na.rm = TRUE) - mean(y, na.rm = TRUE)) / sqrt(var(x, na.rm = TRUE) + var(y, na.rm = TRUE))
}
# dataset
d <- airquality
# this isn't working - trying to find the difference between the mean for each Month and the mean of Month 5, for columns Ozone, Solar.R, Wind, and Temp
d %>%
group_by(Month) %>%
summarize_at(vars(Ozone:Temp), funs(ssmd, x = ., y = .[Month == 5])) %>%
ungroup()
На данный момент это дает следующую ошибку: Error in mean(y, na.rm = TRUE) : argument "y" is missing, with no default
. Поэтому я думаю, что у меня есть синтаксическая ошибка, в дополнение к тому, что я застрял в том, как получить доступ к значениям вне текущей группы.
Ожидаемый результат - это фрейм данных с одной строкой для каждого месяца и одним столбцом для каждой переменной. (Озон, Солнечный. R, Ветер и Температура).