2017-02-20 384 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

相關問題