我想使用均值plus(/minus(2标准偏差作为截止点来获取数据。因此,我想一个一个一个变量一个一个。
我想在下面提供的示例代码中获取的变量有5个异常值。
我创建了两个基准(高和低(,并将它们插入了Minval和Maxval。只是为了防止误解:我的数据框架中有几个时间点和组,GREPL-PART只是在一个测量点上获得一个组以进行胜利。
到目前为止我的代码:
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,value = c(1,1,1.33333333333333,::: 替换有38行,数据有510"
我的替换只有38行,因为 ^34.*组只有38个参与者。我必须将每个组的异常值和测量点赢得胜利...
我如何在RRS变量中替换/winsorize特定参与者组的异常值?
非常感谢您!
您对Winsorize()
的输入仅限于某些观察值(grepl('^34.*', ds$QUESTNNR)
(。您只能将结果附加到相同数量(理想情况下完全相同(行:
ds$RRSout[ grepl('^34.*', ds$QUESTNNR) ] <-
Winsorize( ds$RRS[ grepl('^34.*', ds$QUESTNNR) ],
minval = benchlow , maxval = benchhigh, na.rm = TRUE)