r-主题内winsorization

r-主题内winsorization,r,outliers,desctools,R,Outliers,Desctools,我有一个长格式的数据框data.set,其中每个主题在每个条件下都有不同的数值(data.set$target\u resp.rt)。我已经使用DescTool函数Winsorize(有关信息,请参阅)根据总体标准对数据进行了Winsorize: 弹出以下错误: [中的错误是dplyr语法混淆的问题。在原始问题中,您将向量传递给Winsorize,但是data.set%>%group\u by(Nome,Cognome)是一个数据集,管道(%>%)将整个数据集传递给Winsorize的第一个参数

我有一个长格式的数据框
data.set
,其中每个主题在每个条件下都有不同的数值(
data.set$target\u resp.rt
)。我已经使用DescTool函数
Winsorize
(有关信息,请参阅)根据总体标准对数据进行了Winsorize:

弹出以下错误:


[中的错误是dplyr语法混淆的问题。在原始问题中,您将向量传递给
Winsorize
,但是
data.set%>%group\u by(Nome,Cognome)
是一个数据集,管道(
%>%
)将整个数据集传递给
Winsorize
的第一个参数,这意味着您确实在调用

Winsorize(x = data.set, minval = ..., maxval = ...)
您真正想要的是在
group\u by
之后使用
mutate
来更改
target\u resp.rt
;语法如下所示:

data.set %>% group_by(subject) %>%
  mutate(target_winsorized = Winsorize(target_resp.rt, maxval=unique(overall.criterion.2sd))
这将在数据集
target\u winsorized
中创建一个具有所需属性的新变量。将来,您可能还希望在数据集中保存
全局.criteria.2sd

文件
如果您想了解更多有关语法和
dplyr
样式的信息,请查看
dplyr
文档。

您能提供一个示例数据集供我们测试吗?可能有一个简单的解决方法,因为
groupby
通常会处理类似的情况。我在上面发布了它!非常感谢!
   subject        target_resp.rt   rt.mean     rt.sd
 1 1              1.0398901        0.9016781   0.3109358
 2 1              0.6887729        0.9016781   0.3109358
 3 1              0.7691720        0.9016781   0.3109358
 4 1              1.0064900        0.9016781   0.3109358
 5 1              0.8195999        0.9016781   0.3109358
 6 2              0.8410320        1.0500845   0.4210796
 7 2              0.8229311        1.0500845   0.4210796
 8 2              0.9250839        1.0500845   0.4210796
 9 2              1.0085750        1.0500845   0.4210796
10 2              1.1406291        1.0500845   0.4210796
11 3              0.5561039        0.749789    0.2350127
12 3              0.6022139        0.749789    0.2350127
13 3              0.8560688        0.749789    0.2350127
14 3              0.5886030        0.749789    0.2350127
15 3              0.5520449        0.749789    0.2350127
Winsorize(x = data.set, minval = ..., maxval = ...)
data.set %>% group_by(subject) %>%
  mutate(target_winsorized = Winsorize(target_resp.rt, maxval=unique(overall.criterion.2sd))