数据框中的一些条目示例:
我需要在数据框中找到此列的平均值,但无法找到其所说的平均值:
"参数不是数字或逻辑:返回NA"
非数字条目是破折号,我尝试将它们转换为NA但仍然难以产生平均值的结果。
有人可以帮忙吗?
答案 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)
在计算均值时,这不会考虑分母中的处理记录(连字符)。