首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果多列中有超过25%的NAs,则删除行

如果多列中有超过25%的NAs,则删除行
EN

Stack Overflow用户
提问于 2021-06-08 22:55:45
回答 2查看 110关注 0票数 0

我想删除多列中包含超过25% NAs的所有行。由于这涉及大约120个相应的列,所以不指定所有列是有用的。最好是类似于: columnA和columnZ之间的一切。

我曾尝试过与以下方面合作:

代码语言:javascript
运行
复制
data[!is.na(data$ColumnA:data$ColumnZ), > 0.25]

但它只显示了这个错误:

必须用有效的下标向量子集列。 逻辑下标必须与索引输入的大小匹配。 X输入的大小为250,但下标!is.na(data$ColumnA:data$ColumnZ) > 0.25的大小为3。

(250是数据集中列的实际数量)

我也曾考虑过尝试drop_na,但这导致了类似的问题。

你有什么意见建议?提前谢谢你

EN

Stack Overflow用户

发布于 2021-06-08 23:29:24

我通常使用潮间带奈米包来处理这类任务。

下面是一个使用"airquality“内置数据集来标识>25% NAs (缺失值)的行的示例:

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

data(airquality)
dat1 <- airquality
miss_case_summary(dat1) %>% 
  filter(pct_miss >= 25)

# A tibble: 2 x 3
#   case n_miss pct_miss
#  <int>  <int>    <dbl>
#1     5      2     33.3
#2    27      2     33.3

并排除这两种情况(行):

代码语言:javascript
运行
复制
dat2 <- dat1 %>% 
  slice(-c(5, 27))

如果数据集中有大量NAs,则可以使用:

代码语言:javascript
运行
复制
list_of_gt25_NAs <- miss_case_summary(dat1) %>% 
  filter(pct_miss >= 25)

dat2 <- dat1 %>% 
  slice(-c(list_of_gt25_NAs$case))
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67895520

复制
相关文章

相似问题

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