2013-02-15 76 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