2011-11-19 49 views
0

我在數據框上執行簡單函數時遇到問題,無法確定它是列的數據類型還是數據框中的錯誤數據。錯誤的R數據類型或錯誤的數據?

我將一個SQL查詢導出到一個CSV文件中,然後將其加載到一個數據框中,然後將其附加。

df <-read.csv("~/Desktop/orders.csv") 
Attach(df) 

當我完成,並運行str(df),這裏是我得到:

$ AccountID: Factor w/ 18093 levels "(819947 row(s) affected)",..: 10 97 167 207 207 299 299 309 352 573 ... 
$ OrderID : int 1874197767 1874197860 1874196789 1874206918 1874209100 1874207018 1874209111 1874233050 1874196791 1875081598 ... 
$ OrderDate : Factor w/ 280 levels "","2010-09-24",..: 2 2 2 2 2 2 2 2 2 2 ... 
$ NumofProducts : int 16 6 4 6 10 4 2 4 6 40 ... 
$ OrderTotal : num 20.3 13.8 12.5 13.8 16.4 ... 
$ SpecialOrder : int 1 1 1 1 1 1 1 1 1 1 ... 

試圖運行下面的功能,這裏是我得到:

> length(OrderID) 
[1] 0 

> min(OrderTotal) 
[1] NA 

> min(OrderTotal, na.rm=TRUE) 
[1] 5.00 

> mean(NumofProducts) 
[1] NA 

> mean(NumofProducts, na.rm=TRUE) 
[1] 3.462902 

我有兩個與此數據幀有關的問題:

  • 我是否有適合這些列的數據類型?數字與整數與小數。
  • 有沒有辦法查看數據集以找到需要使用na.rm = TRUE的行以使該功能有效?我想知道有多少,等等。
+1

將列名暴露給全局環境的常用函數是attach(df),那麼你使用了不同的函數還是你拼錯了它? –

+0

@DWin你的意思是'attach()'和'Attach()'? – mikebmassey

+0

是的。在R Attach()不是基本函數。所以如果它起作用,它必須來自其他一些軟件包。 –

回答

2

num和int之間的區別在這個階段是非常不相關的。

查看NA處理初始者的幫助(is.na)。做類似的事情:

sum(is.na(foo)) 

查看有多少foo是NA值。然後如下所示:

df[is.na(df$foo),] 

查看df的行,其中foo是NA。