如何在R中删除带有NA的行后找到平均值

时间:2016-03-20 08:14:20

标签: r

我已经检查了其他帖子,以找到如何在R中删除带有NAs的行的方法,但之后我无法操作(例如找到平均值)

enter image description here

1 个答案:

答案 0 :(得分:2)

原因是'x'和'y'列可能是factor类。我们可以将其更改为numeric,它应该可以正常工作

mean(as.numeric(as.character(test2$x)), na.rm=TRUE)
#[1] 300

当数据集中已存在非数字元素时,我们会使用read.csv/read.table来使用默认选项stringsAsFactors=TRUE读取数据集。因此,任何具有非数字的列都是factor。即使我们使用stringsAsFactors=FALSE,该列将为character,并且直接在mean类上使用character会得到与结果相同的NA

mean(as.character(test2$y), na.rm=TRUE)
#[1] NA
#Warning message:
#In mean.default(as.character(test2$y), na.rm = TRUE) :
#  argument is not numeric or logical: returning NA

我们可以查看str(test2)并找到class或使用class(test2$x)

数据

test <- data.frame(x= c(124, "*", 546, 54), y = c("*", 
    2, 34, 4), z =c(324, 354, 12, 54), b = c(133, 54, 11, 545))
test[test=="*"] <- NA
test2 <- na.omit(test)