2017-02-20 369 views
0

我试图获得this数据集的年龄字段的方法。 我清理过它。但是当我运行colMeans中的错误(adult_csv [1],na.rm = TRUE):'x'必须为数字

colMeans(adult_csv[1], na.rm = TRUE) 

它抱怨有:

Error in colMeans(adult_csv[1], na.rm = TRUE) : 'x' must be numeric 

我已经尝试了adult_csv[1],它正确地给了我age功能。 也没有x或其中缺少数据。

+3

请检查'str(adult_csv [1])'。你正在做一个单独的列,为什么你需要'colMeans' – akrun

+0

x是指那里指的是你的数据源。该函数由包中的colMeans(x,...)定义,所以它给你它的默认值,而不是你的数据... – sconfluentus

回答

1

如果您使用的是read.csv,则age列中有一些字符会导致R将整个列读取为字符向量而不是数字。为了使hist函数起作用,所有数据都需要是类数字。

首先看看:

adult_csv[which(is.na(as.numeric(adult_csv[1]))), 1] 

还有一堆的 “?” R在计算直方图时无法使用的值。这些应该是NA值,因为“?”只是丢失数据的占位符。当你将这个列转换为数字时,R会给你一个警告,说它不能转换“?”成数字。相反,它会使用NA,但在您的情况下这可能是一个好结果。

用途:

adult_csv[1] <- as.numeric(adult_csv[1]) 

当你导入数据,只需花一点时间来寻找这种东西并了解这些错误信息的意思。关于堆栈溢出还有很多其他问题可以回答这个问题。

希望这是有道理的。

+0

我正在使用'read.csv',现在我面对'错误:(列表)对象不能被强制键入'double'' – user5363938

+0

如果不知道如何导入数据,则很难进行调试。我刚刚使用: adult_csv < - read.csv(“https://courses.cs.ut.ee/MTAT.03.183/2017_spring/uploads/Main/adult.csv”,header = T,sep =“\ t “,stringsAsFactors = F) – detroyejr

+0

刚刚解决了thx – user5363938

相关问题