使用用户定义的函数删除缺失值
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数据清洗函数大全(判断缺失删除空值填补空值替换元素分割元素)