Winsorize по факторам в R? - PullRequest
       3

Winsorize по факторам в R?

0 голосов
/ 26 февраля 2019

У меня проблемы с выяснением того, как winsorize по группам и условиям для моих данных.Раньше я создавал новые векторы для каждой группы и условия, winsorized отдельно, а затем связывал векторы обратно вместе.Это кажется неэффективным, и сейчас я работаю с большим набором данных, который может занять много времени.Я пытался использовать dplyr, но не повезло.Вот пример моих данных и того, что я пытаюсь сделать.

library(robustHD)
library(dplyr)
set.seed(1)
df <- data.frame(id = rep(1:10, each=3),
                 group = rep(c('group1', 'group2'), each =3),
                 condition = rep(c('cond1', 'cond2', 'cond3'), times = 10),
                 measure = rep(1:5, each=3) + rnorm(15))

df$measure.win <- df %>% group_by(group, condition) %>%
  winsorize(df, measure)

Это ошибка, которую я продолжаю получать:

Error in FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...) : non-numeric argument to binary operator

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 26 февраля 2019

Решение:

df = df %>% group_by(group, condition) %>% mutate(measure_winsorized = winsorize(measure))

(Если вас интересует учебник по dplyr, я настоятельно рекомендую этот один.)

Первоначальный ответ:

Как правило, использование %>% обеспечит вывод функции, предшествующей каналу, в качестве входных данных для функции, следующей за каналом.Поэтому, если бы вы вызывали функцию winsorize() самостоятельно, используя winsorize(df, measure), вы должны опустить первый аргумент и использовать здесь winsorize(measure), потому что вывод предыдущего group_by(group_condition) является фреймом данных.

Другими словами: здесь может происходить то, что ваш вызов функции интерпретируется как winsorize(df, df, measure).

Если бы вы могли поделиться, в каком пакете находится ваша функция winsorize(), я могу помочь вам найти подходящийКод dplyr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...