R:修剪变量并将其添加到数据框
R: trimming a variable and adding it to a dataframe
我是R初学者。我想 trim 使用包 "DescTools" 的 Trim 函数的变量。这适用于:
mydata <- data.frame(
a <- rnorm(40, mean = 0, sd = 1)
)
a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)
这会创建一个对象,但是,我想将它添加到我的数据框 mydata 中。当我尝试通过
执行此操作时
mydata$a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)
R 给我一个错误,因为 mydata$a_trim 的行数少于数据帧(显然,因为它是一个 trimmed 变量)。我该怎么做?
感谢您的耐心等待和帮助!
Trim
不适合你想做的事情。它 从向量中删除 极值,以便您可以将该向量传递给 mean
或 sd
之类的东西,以便可以在不受异常值影响的情况下计算这些数量.
要将极值设置为 NA,您可以使用 quantile
。
upper_quantile <- quantile(mydata$a, 0.9)
lower_quantile <- quantile(mydata$a, 0.1)
# col a where a > its 90th percentile becomes NA
mydata$a[mydata$a > upper_quantile] <- NA
mydata$a[mydata$a < lower_quantile] <- NA
反映这一点 post 我将函数 Trim
更改为 return 修剪元素的索引作为属性 "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 起)
我是R初学者。我想 trim 使用包 "DescTools" 的 Trim 函数的变量。这适用于:
mydata <- data.frame(
a <- rnorm(40, mean = 0, sd = 1)
)
a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)
这会创建一个对象,但是,我想将它添加到我的数据框 mydata 中。当我尝试通过
执行此操作时mydata$a_trim <- Trim(mydata$a, trim = 0.2, na.rm = TRUE)
R 给我一个错误,因为 mydata$a_trim 的行数少于数据帧(显然,因为它是一个 trimmed 变量)。我该怎么做?
感谢您的耐心等待和帮助!
Trim
不适合你想做的事情。它 从向量中删除 极值,以便您可以将该向量传递给 mean
或 sd
之类的东西,以便可以在不受异常值影响的情况下计算这些数量.
要将极值设置为 NA,您可以使用 quantile
。
upper_quantile <- quantile(mydata$a, 0.9)
lower_quantile <- quantile(mydata$a, 0.1)
# col a where a > its 90th percentile becomes NA
mydata$a[mydata$a > upper_quantile] <- NA
mydata$a[mydata$a < lower_quantile] <- NA
反映这一点 post 我将函数 Trim
更改为 return 修剪元素的索引作为属性 "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 起)