基于字符值的子集数据帧

时间:2015-04-03 21:19:05

标签: r string character subset

我正在尝试使用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很新,所以我很抱歉,如果有一些我不理会的帖子惯例,但如果有人有灵丹妙药来让这些数据合作,我会很喜欢你的见解:)

2 个答案:

答案 0 :(得分:1)

如果使用正确的变量值,则不同的方法应该有效。您的问题可能是变量名中的额外空格。

您可以使用grep来避免此类问题,例如:

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

答案 1 :(得分:1)

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

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