R 如何匹配函数的布尔输出;由「;输入向量
我试图将位于上/下分位数+/-3*IQR之外的数据点设置为NA。我面临的挑战是如何按数据组执行此操作 例如,下面的数据集有一个拆分列和一个值列。对于每个分割,我需要计算值列的上下分位数和IQR,然后将值列中满足上述条件的数据点设置为NAR 如何匹配函数的布尔输出;由「;输入向量,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.
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