使用用户定义的函数删除缺失值

Posted

技术标签:

【中文标题】使用用户定义的函数删除缺失值【英文标题】:Remove missing values with user defined function 【发布时间】:2021-03-04 15:37:37 【问题描述】:

我有一个数据集作为缺失值的数据。

a <- sample(1:100,15)
b <- sample(1:20,15)
data <- data.frame(a,b)
data[c(3,6,8,12),2] <- NA
data

现在我想一次删除一个变量缺失值的行。 (不想使用 na.omit() )。我写了以下函数,但它不起作用。

rmv_missing <- function(y,z)
z <- z[is.na(z$y) == TRUE,]
return(z)

rmv_missing("b",data)

这个也试过了...

library(dplyr)
na_values <- function(x,y,z)
z <- (filter(z,!is.na(y)))
return(z)

rmv_missing("b",data)

这些功能都不起作用。有人可以帮助我了解我在哪里犯了错误并纠正代码。提前致谢。

【问题讨论】:

【参考方案1】:

首先,您实际上并不需要“== T”,因为“is.na”函数已经吐出了一个逻辑向量。另一个问题是,以“data$b”的形式访问 data.frame 在函数中不起作用。因此,请执行以下操作etvoilà

rmv_missing <- function(y,z)

  print(z$y) # Does not work
  print(z[, y]) # Works
  
  z[is.na(z[, y]),]


rmv_missing("b",data)
# NULL
# [1]  9 16 NA  5 13 NA  8 NA 11 17 20 NA 10 12  1
#     a  b
# 3  33 NA
# 6  59 NA
# 8  81 NA
# 12 26 NA

【讨论】:

非常感谢!您的建议帮助我理解并纠正了我的错误。

以上是关于使用用户定义的函数删除缺失值的主要内容,如果未能解决你的问题,请参考以下文章

R语言自定义函数计算dataframe每列中的缺失值NA的个数缺失值问题及其填充示例

100天精通Python(数据分析篇)——第68天:Pandas数据清洗函数大全(判断缺失删除空值填补空值替换元素分割元素)

何时使用缺失值与 NULL 值在 R 中传递未定义的函数参数,为啥?

缺失值处理

pandas对缺失值的处理

pandas使用dropna函数删除dataframe中列非缺失值的个数小于某一比例阈值的数据列