r通过特定的截止值winsorize不起作用



我想使用均值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)

相关内容

  • 没有找到相关文章

最新更新