Я хочу улучшить свои данные, используя среднее плюс (/ минус) 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?
Заранее большое спасибо!