R:如何在数据框中找到列的平均值,它具有非数字(特别是短划线' - ')以及数字

时间:2017-09-14 06:12:35

标签: r mean

数据框中的一些条目示例:

enter image description here

我需要在数据框中找到此列的平均值,但无法找到其所说的平均值:

  

"参数不是数字或逻辑:返回NA"

非数字条目是破折号,我尝试将它们转换为NA但仍然难以产生平均值的结果。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

这不是使用提供的数据,但应足以显示所需的结果。请注意,这与How to avoid warning when introducing NAs by coercion有关

x <- c("5", "-", "15")
mean(suppressWarnings(as.numeric(as.character(x))), na.rm = TRUE)
#> [1] 10

答案 1 :(得分:2)

尝试此操作,假设您的数据名为dat

dat[dat == "-"] <- NA

mean(dat$Population_and_People, na.rm = TRUE]

答案 2 :(得分:1)

又一种方式。

is.na(dat$Population_and_People.X__76) <- dat$Population_and_People.X__76 == "-"

mean后跟na.rm = TRUE)

修改
请注意,您的列可能属于factor类。如果vetcor具有诸如&#34; - &#34;之类的字符,则它只能有一种类型的数据,整个列将在第一步中转换为类character,然后转换为{{1} }。最后一步是默认行为,您必须设置factor才能使其不发生。 (不那么)实际结果是您不能在该列上使用stringsAsFactors = FALSE。你很可能需要做

mean

在您执行此操作之前,请使用dat$Population_and_People.X__76 <- as.numeric(as.character(dat$Population_and_People.X__76)) class(dat$Population_and_People.X__76)检查该列的类。

答案 3 :(得分:0)

试试这个:

dataset$Population_and_People.X_76 <- gsub("-", NA, dataset$Population_and_People.X_76], fixed=TRUE) dataset$Population_and_People.X_76 <- as.numeric(dataset$Population_and_People.X_76) mean(dataset$Population_and_People.X_76, na.rm=TRUE)

在计算均值时,这不会考虑分母中的处理记录(连字符)。