r - R中按组对异常值进行Winsorization
问题描述
尝试按组对异常值进行缩尾处理时遇到了一个奇怪的问题。假设我们有一个这样的数据集,并且我们希望在我们认为合理的任何阈值上对 col1 和 col2 进行 Winsorize。
df <- data.frame(
col1 = c(1:200, 101:300),
col2 = c(1:199, NA, 101:110,NA, 112:300),
year = c(rep(2005,200), rep(2006,200))
)
我的第一次尝试是:
df %>%
group_by(year) %>%
mutate_at(.funs = list(wins = robustHD::winsorize), .vars = vars(col1, col2)) %>%
ungroup()
然而,什么都没有改变。然后我尝试另一个函数(DescTools::Winsorize),
df %>%
group_by(year) %>%
mutate_at(.funs = list(wins = Winsorize), .vars = vars(col1, col2), probs = c(0.05, 0.95), na.rm=TRUE) %>%
ungroup()
它有效。我尝试了TIDYVERSE (dplyr)
@Parfait 对此处样本的回答,似乎robustHD::winsorize
确实有效,尽管不知道为什么 group 1
of的值test2
都是 NaN。任何人都知道为什么会发生这种情况?
解决方案
推荐阅读
- shell - '{读取txt文件并过滤日期<日期,>日期和日期之间的记录}'
- javascript - 为什么 '0' 和 'undefined' 在这个 Javascript 代码中不被认为是错误的?
- java - Apache Commons 配置
- c# - 是否有可能在最小化的应用程序中运行 UWP WebView,包括声音输出?
- javascript - 我已经安装了 @react-native-community/async-storage 但导入它时出错
- python-3.x - 使用python从PDF中提取嵌入文件
- html - 将行表单组元素右对齐
- java - java接口中的@Value注解
- android - view.getId() 和 getResource.getIdentifier() 有什么区别
- c++ - 将子类保存在父 shared_ptr 的队列中