首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何去除异常值但保持NA

如何去除异常值但保持NA
EN

Stack Overflow用户
提问于 2020-09-21 18:37:49
回答 1查看 45关注 0票数 0

我有一些数据(如下所示),我想要删除其中的异常值。我想删除第一个百分位数和第99个百分位数之外的所有观察值。问题是有很多NA观察。我想保留这些NA观察结果。

代码语言:javascript
运行
复制
combined

date        change_cds
<date>      <dbl>
2005-12-31  -2.5975486          
2005-11-30  -1.5873349          
2005-11-30  NA          
2005-11-30  NA          
2005-11-30  -31.7240875         
2005-12-31  -8.7011377          
2005-12-31  9.5310180           
2005-12-31  -18.9242000         
2005-12-31  -3.8466281          
2005-12-31  5.7158414
2005-11-30  13.0053128          
2005-11-30  10.2129495          
2005-11-30  NA          
2005-11-30  -13.9152604         
2005-11-30  -9.1434206  

以前,我有这样的代码,当数据集中没有NA时,它可以工作:

代码语言:javascript
运行
复制
combined <- combined %>%
  filter(change_cds < quantile(combined$change_cds, (1-0.01)) & change_cds > quantile(combined$change_cds, 0.01))

然而,在引入NA之后,代码就会分崩离析。我希望排除除NA观测值之外的第一个和第99个百分位数之外的所有观测值。但我希望保留所有具有NA变量的行。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-23 11:26:51

你可以使用-

代码语言:javascript
运行
复制
library(dplyr)

combined <- combined %>%
  filter(change_cds < quantile(change_cds, 0.99, na.rm = TRUE) & 
     change_cds > quantile(change_cds, 0.01, na.rm = TRUE) | is.na(change_cds)))

在R基中-

代码语言:javascript
运行
复制
combined <- subset(combined, change_cds < quantile(change_cds, 0.99, na.rm = TRUE) & 
        change_cds > quantile(change_cds, 0.01, na.rm = TRUE) | is.na(change_cds))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63990617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档