2013-02-15 77 views
-2

我用R來子集數據集D(CSV格式),但D3總是包含0行「< 0 rows>(或0長度row.names)「。我檢查了數據集並沒有發現任何缺失值。我的數據集有什麼問題?謝謝!在R中使用子集,但得到了一個特定的子集0行

D <- read.csv(file="C:\\...\\D.csv", header = T, sep = ",") 

D1 <- subset(D, Season == "Spring") 
D2 <- subset(D, Season == "Summer") 
D3 <- subset(D, Season == "Fall") 

D3 
[1] Cost 
[2] Gender          
[3] Participant         
<0 rows> (or 0-length row.names) 

names(D) 
[1] "Cost" 
[2] "Gender"          
[3] "Participant"          

unique(B$Season) 
[1] Spring  Summer Fall    
3 Levels: Fall Spring Summer 

我創建了一個只包含D3(CSV格式)的新數據集,問題就沒有了。但是,這不是一個有效的解決方案。

謝謝大家的所有建議!我剛剛重新輸入了我的原始CSV數據集中的每個「秋季」,這些數據集以某種方式工作。

+0

鍵入D3只給出變量名稱。 – 2013-02-15 21:06:44

+0

你可以告訴我們'names(D)'的結果,然後(假設'Season'是'D'中的一個字段)'unique(D $ Season)'的結果嗎?如果''Fall''是'D $ Season'的值之一,那麼應該直接向你展示。 – Simon 2013-02-15 21:26:52

回答

1

在開始subset之前,您應該檢查您正在使用的邏輯語句。如果您的數據幀相對較小(< 25行左右),然後運行:

D$Season == "Fall" 

這會給你像一個向量:

[1] TRUE TRUE FALSE FALSE FALSE TRUE 

甚至:

which(D$Season == "Fall") 

[1] 1 2 6 

這是告訴你哪個rows子集將選擇。

如果你有一個龐大的數據幀,只是做:

table(D$Season == "Fall") 

這會告訴你有多少行有值Fall。如果您運行table(D$Season == "Fall"),我願意做下注,您將看到所有結果出現FALSE

+0

你明白了;它給了我所有的錯誤。爲什麼我的D1和D2在「子集」上正常工作? – 2013-02-15 21:43:18

+0

'subset'每次都能正常工作。問題是D中沒有'季節'是'Fall'的值。 – 2013-02-15 21:45:23

+0

如何在原始CSV數據集中解決此問題? – 2013-02-15 21:48:53