【问题标题】:subset data frame based on character value基于字符值的子集数据框
【发布时间】:2015-04-03 21:19:05
【问题描述】:

我正在尝试使用 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 还很陌生,所以如果有一些我忽略的发布惯例,我深表歉意,但如果有人有灵丹妙药让这些数据进行合作,我会很喜欢你的见解:)

【问题讨论】:

  • 您指向数据样本的链接已损坏。
  • 检查列名的拼写。如果他们有前导或尾随空间,那将是一个(不愉快的)惊喜。 subset 看起来应该成功了。

标签: r string character subset


【解决方案1】:

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

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

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

【讨论】:

  • grep 函数解决了这个问题。我无法告诉您我尝试的其他方法有什么问题,但这是一个很好的解决方法。谢谢。
【解决方案2】:
    ## exclude 
    MU99<-subset(NoMissNoDup99,!(Service.Type %in% c('Hospital','Hotel or Motel')))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多