【发布时间】:2016-10-26 11:37:55
【问题描述】:
我编写了一个函数,它根据 name 列的值获取数据子集。它计算列“mark”的异常值并替换所有异常值。 但是,当我尝试组合这些不同的子集时,元素的顺序会发生变化。有什么方法可以保持“标记”列中元素的顺序
我的数据集是:
name mark
A 100.0
B 0.5
C 100.0
A 50.0
B 90.0
B 1000.0
C 1200.0
C 5000.0
A 210.0
我写的函数是:
data.frame(do.call("rbind", as.list(by(data, data$name,
function(x){apply(x[, .(mark)],2,
function(y) {y[y > (quantile(x$mark, na.rm=TRUE)[[3]][[1]] + 1.5 * IQR(x$mark))]
<- (quantile(x$mark, na.rm=TRUE)[[3]][[1]] + 1.5 * IQR(x$mark));y})}))))
上述函数的结果是下面的第一列(出于说明目的,我手动添加回name):
mark NAME
100.000 ----- A
50.000 ----- A
210.000 ----- A
0.500 ----- B
90.000 ----- B
839.625 ----- B
100.000 ----- C
1200.000 ----- C
4875.000 ----- C
在上面的结果中,标记列的值的顺序发生了变化。有什么方法可以保持元素的顺序吗?
【问题讨论】:
-
为什么需要
apply?
标签: r function sorting outliers rbind