基于字符值的子集数据框

subset data frame based on character value

我正在尝试使用 colClasses='character' 选项对通过 read.table 导入的数据框进行子集化。

数据的小样本可以found here

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

删除重复项、缺失值和所有不必要的列后,我得到了这些维度的数据框:

>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 的新手,所以如果我忽略了一些发布惯例,我深表歉意,但如果有人有灵丹妙药让这些数据合作,我很乐意你的见解:)

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

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

NoMissNoDup99[grep("Apartment|Duplex|Business",NoMissNoDup99$Service.Type),]
    ## exclude 
    MU99<-subset(NoMissNoDup99,!(Service.Type %in% c('Hospital','Hotel or Motel')))

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