R Winsorizing с определенными значениями отсечки не работает - PullRequest
0 голосов
/ 20 мая 2019

Я хочу улучшить свои данные, используя среднее плюс (/ минус) 2 стандартных отклонения переменной в качестве точек отсечения. Таким образом, я хочу winsorize каждую переменную одну за другой.

Переменная, которую я хочу выделить в приведенном ниже примере кода, имеет 5 выбросов.

Я создал два теста (высокий и низкий) и вставил их в minval и maxval. Просто для того, чтобы избежать недопонимания: у меня есть несколько временных точек и групп в моем фрейме данных, часть grepl должна просто получить одну группу в одной точке измерения для winsorizing.

Пока мой код:

library(DescTools)

benchhigh <- mean(ds$RRS[grepl('^34.*', ds$QUESTNNR)], na.rm=TRUE) + 
              2*sd(ds$RRS[grepl('^34.*', ds$QUESTNNR)], na.rm=TRUE)

benchlow <- mean(ds$RRS[grepl('^34.*', ds$QUESTNNR)], na.rm=TRUE) - 
              2*sd(ds$RRS[grepl('^34.*', ds$QUESTNNR)], na.rm=TRUE)

ds$RRSout <- Winsorize( ds$RRS[ grepl('^34.*', ds$QUESTNNR) ], 
                        minval = benchlow , maxval = benchhigh, na.rm = TRUE)

Я получаю ошибку:

"Ошибка в $<-.data.frame (*tmp*, RRSout, значение = c (1, 1.33333333333333,: замена имеет 38 строк, данные имеют 510 "

В моей замене только 38 строк, потому что в группе ^ 34. * всего 38 участников. Я должен усилить выбросы по группам и точкам измерения, хотя ...

Как я могу заменить / усилить выделение определенных групп участников в переменной RRS?

Заранее большое спасибо!

...