2015-04-03 30 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')) 
相關問題