У меня есть повторяющиеся даты, столбец для возвратов, а затем множество других столбцов с другими переменными, по которым я пытаюсь отсортировать, а затем извлекать среднюю доходность верхнего квартиля отсортированных составляющих переменных для каждой даты.Есть NA, и я хочу игнорировать NA для каждого столбца отдельно при сортировке.
Исходные данные выглядят следующим образом
date return a b c d
2/1/18 5 3 5 4 9
2/1/18 6 2 1 NA 7
2/1/18 5 NA 6 NA 5
2/1/18 NA 1 NA 2 NA
2/1/18 NA NA NA 1 NA
2/2/18 NA NA 2 NA NA
2/2/18 4 10 4 6 NA
2/2/18 7 5 NA 2 NA
2/2/18 8 7 7 9 NA
2/3/18 NA 2 NA NA NA
2/3/18 3 NA 6 5 8
2/3/18 6 5 2 4 4
2/3/18 5 8 8 1 9
2/4/18 6 8 6 3 1
2/4/18 5 2 5 9 10
2/4/18 7 4 2 10 8
Я хочу, чтобы конечные данные отображались следующим образом
date high a return high b return high c return high d return
2/1/18 5 5 5 5
2/2/18 4 8 8 NA
2/3/18 8 5 3 5
2/4/18 6 6 7 5
Я пытаюсь переключить мой код с выполненияследующий раз для разных переменных.
High = df[!is.na(df$a),] %>%
group_by(date) %>%
filter(a > quantile(a, .666)) %>%
summarise(high_return = mean(return))
Я перешел на этот код, но не смог воспроизвести способ, которым я имел дело с na в предыдущем коде (т. Е.! Is.na).
list <- c("a", "b", "c", "d")
High <- df %>%
group_by(date) %>%
summarize_at(vars(one_of(list)),
funs(HighReturn = mean(return[na.omit(.) > quantile((.), .666, na.rm = TRUE)]))
Thisне дает те же результаты, что и столбцы один за другим.Я также попытался удалить na.omit, добавив na.omit справа "."и другие комбинации.Есть ли способ создать! Is.na для каждого столбца, когда он проходит через функцию?