R 如何匹配函数的布尔输出;由「;输入向量

R 如何匹配函数的布尔输出;由「;输入向量,r,R,我试图将位于上/下分位数+/-3*IQR之外的数据点设置为NA。我面临的挑战是如何按数据组执行此操作 例如,下面的数据集有一个拆分列和一个值列。对于每个分割,我需要计算值列的上下分位数和IQR,然后将值列中满足上述条件的数据点设置为NA x <- structure(list(Split = c(1L, 1L, 3L, 2L, 2L, 2L, 2L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 2L, 3L), Value = c(0.9, 0.

我试图将位于上/下分位数+/-3*IQR之外的数据点设置为NA。我面临的挑战是如何按数据组执行此操作

例如,下面的数据集有一个拆分列和一个值列。对于每个分割,我需要计算值列的上下分位数和IQR,然后将值列中满足上述条件的数据点设置为NA

x <- structure(list(Split = c(1L, 1L, 3L, 2L, 2L, 2L, 2L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 2L, 3L), Value = c(0.9, 0.9, 3.5, 2.2, 2.2, 2.2, 2.2, 0.9, 3.5, 3.5, 3.5, 1.1, 3.5, 0.9, 1.9, 3.4, 0.9, 3.5, 2.2, 3.5)), .Names = c("Split", "Value"), class = "data.frame", row.names = c(NA, -20L))

x您可以使用
unsplit
而不是
unlist
来反转从
的拆分:

x$Value[unsplit(out, x$Split)] <- NA
##   Split Value
##1      1   0.9
##2      1   0.9
##3      3   3.5
##4      2   2.2
##5      2   2.2
##6      2   2.2
##7      2   2.2
##8      1   0.9
##9      3   3.5
##10     3   3.5
##11     3   3.5
##12     3    NA
##13     3   3.5
##14     1   0.9
##15     1    NA
##16     3    NA
##17     1   0.9
##18     3   3.5
##19     2   2.2
##20     3   3.5
x$Value[unsplit(out,x$Split)]
x$Value[unlist(out)] <- NA
x$Value[unsplit(out, x$Split)] <- NA
##   Split Value
##1      1   0.9
##2      1   0.9
##3      3   3.5
##4      2   2.2
##5      2   2.2
##6      2   2.2
##7      2   2.2
##8      1   0.9
##9      3   3.5
##10     3   3.5
##11     3   3.5
##12     3    NA
##13     3   3.5
##14     1   0.9
##15     1    NA
##16     3    NA
##17     1   0.9
##18     3   3.5
##19     2   2.2
##20     3   3.5