2015-04-03 28 views
1

我正在尝试使用colClasses='character'选项来导入使用read.table导入的数据框。基于字符值的子集数据框

数据的小样品可以是found here

Full99<-read.csv("File.csv",header=TRUE,colClasses='character') 

删除重复,缺失值后,所有不必要的列我得到这些dimmensions的数据帧:

>dim(NoMissNoDup99) 
[1] 81551  6 

我有兴趣减少数据只包括观察一个具体的Service.Type

我试着用子集函数:

MU99<-subset(NoMissNoDup99,Service.Type=='Apartment'| 
Service.Type=='Duplex'| 
Service.Type=='Triplex'| 
Service.Type=='Fourplex', 
select=Service.Type:X.13) 

dim(MU99) 
[1] 0 6 

MU99<-NoMissNoDup99[which(NoMissNoDup99$Service.Type!='Hospital' 
       & NoMissNoDup99$Service.Type!= 'Hotel or Motel' 
       & NoMissNoDup99$Service.Type!= 'Industry' 
       & NoMissNoDup99$Service.Type!= 'Micellaneous' 
       & NoMissNoDup99$Service.Type!= 'Parks & Municipals' 
       & NoMissNoDup99$Service.Type!= 'Restaurant' 
       & NoMissNoDup99$Service.Type!= 'School or Church or Charity' 
       & NoMissNoDup99$Service.Type!='Single Residence'),] 

但这并没有消除观察。

我已经试过了同样的方法,但稍微调整了...

MU99<-NoMissNoDup99[which(NoMissNoDup99$Service.Type=='Apartment' 
       |NoMissNoDup99$Service.Type=='Duplex' 
       |NoMissNoDup99$Service.Type=='Triplex' 
       |NoMissNoDup99$Service.Type=='Fourplex'), ] 

但删除了每个观察...

最终的子集应该有大约8000个某处观察

我对于R和Stack Overflow来说,这是非常新的,所以我很抱歉如果发布的约定我忽略了遵循,但如果任何人有一个神奇的子弹来获得这些数据进行合作,我会喜欢你的见解:)

+1

您对数据的样本链接断开。 – cmbarbu 2015-04-03 21:31:39

+0

检查列名称的拼写。如果他们有领先或尾随的空间,这将是一个(令人不快的)惊喜。 “子集”看起来应该是成功的。 – 2015-04-03 22:13:44

回答

1

如果使用正确的变量值,不同的方法应该可以工作。您的问题可能是您的变量名称中有多余的空格。

你能避免这种使用grep例如问题:

NoMissNoDup99[grep("Apartment|Duplex|Business",NoMissNoDup99$Service.Type),] 
+0

grep函数解决了这个问题。我无法告诉你与我尝试的其他方法有什么问题,但这是一个很好的解决方案。谢谢。 – 2015-04-03 23:30:05

1
## exclude 
    MU99<-subset(NoMissNoDup99,!(Service.Type %in% c('Hospital','Hotel or Motel'))) 

    ##include 
    MU99<-subset(NoMissNoDup99,Service.Type %in% c('Apartment','Duplex')) 
相关问题