删除特定变量的5%百分位数

问题描述 投票:0回答:1

首先,我知道有很多关于此的主题,但它们似乎都涉及整个数据集。但我想将它应用于一个特定的变量,这给我带来了其他线程没有解决的问题。

所以我想删除变量“cap”的5%折扣(低端和高端)。这是我试过的。

attach(nuclear)

#variable cap in set nuclear, i want to delete (after inspecting the percentles) for example everything under 5% for cap only. 
quantile(cap, c(.025, .050, 0.25, 0.50, .95, .975)) 


quantile(nuclear$Point, 0.05)
nuclear$cap %>% filter(Point < quantile(nuclear$Point, 0.05))

这就是我得到的

Error in UseMethod("filter_") : 
 no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"

r outliers percentile
1个回答
1
投票

如果您只是想删除封顶内变量中的值,那么您可以使用嵌套的ifelse循环。

这样的事情:

library(tidyverse)
nuclear %>%
mutate(cap = ifelse(cap > quantile(cap, probs = .95) |
                    cap < quantile(cap, probs = .5), NA, cap))

但是如果你想过滤整个数据集,那么只需使用相同的代码,但在过滤而不是变异。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.