R:修剪变量并将其添加到数据帧

时间:2016-09-06 15:22:04

标签: r desctools

我是R初学者。我想使用包" DescTools"的Trim函数修剪变量。这适用于:

public double compute() {
    double primaryBasePrice;
    double secondaryBasePrice;
    double tertiaryBasePrice;

    // some of compute impl
    primaryBasePrice = order.getPrimary();
    secondaryBasePrice = order.getSecondary();
    tertiaryBasePrice = order.getTertiary();
    // the rest of compute impl
}

这会创建一个对象,但是,我想将它添加到我的数据帧mydata中。当我尝试通过

执行此操作时
mydata <- data.frame(
 a <- rnorm(40, mean = 0, sd = 1)
 )
a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)

R给我一个错误,因为mydata $ a_trim的行数比数据帧少(显然,因为它是一个修剪变量)。我怎么能这样做?

感谢您的耐心和帮助!

2 个答案:

答案 0 :(得分:2)

mydata$a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE) 并不适合您想要做的事情。它从向量中移除极值,以便您可以将该向量传递给Trimmean,以便可以在不受异常值影响的情况下计算这些数量。

要将极值设置为NA,您可以使用sd

quantile

答案 1 :(得分:0)

反映这篇文章我改变了函数Trim,将修剪元素的索引作为属性"trim"返回。 现在,您仍然可以获得修剪后的矢量,但是如果您只想标记要修剪的元素,则可以执行以下操作:

a <- rnorm(40, mean = 0, sd = 1)
a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)
data.frame(x=a, 
           trim=is.element(seq_len(length(a), attr(a_trim, "trim")))

(自DescTools 0.99.18起)