【问题标题】:(R) [] / subset() returns an empty data frame(R) [] / subset() 返回一个空数据框
【发布时间】:2015-06-12 03:18:12
【问题描述】:

我有一个大型数据集,看起来像这样,还有几十万个条目,保存为data

        Group1      dtm_Flight_Date       Departure Arrival str_Fare_Category_Ident 
        1   8P104   06/11/2010 9:05         YYJ     YVR     B   
        2   8P104   06/11/2010 9:05         YYJ     YVR     K  
        3   8P104   06/11/2010 9:05         YYJ     YVR     L   
        4   8P104   06/11/2010 9:05         YYJ     YVR     N   
        5   8P104   06/11/2010 9:05         YYJ     YVR     Q  
        6   8P104   06/11/2010 9:05         YYJ     YVR     Y  
        7   8P104   6/14/2010 9:05:00 AM    YYJ     YVR     B  
        8   8P104   6/14/2010 9:05:00 AM    YYJ     YVR     K  
        9   8P104   6/14/2010 9:05:00 AM    YYJ     YVR     L   
        10  8P104   6/14/2010 9:05:00 AM    YYJ     YVR     N  

现在,我想做的是根据“str_Fare_Category_Ident”对数据进行子集化,尤其是在它等于 Y 的情况下。虽然我认为这应该是我以前做过的一项简单任务,但我遇到了一些麻烦。

我试过了

     public_bc <- data[data[, 5]=="Y", ]

但这只是返回一个空数据框。也试过了:

     public_bc <- data[data$str_Fare_Category_Ident=="Y", ]

同样的问题。

我尝试使用子集(),但也无济于事:

    public_bc <- subset(data, data[, 5]=="Y")

还返回一个空数据框。

str_Fare_Category_Ident 目前是一个因素,但我也尝试将其更改为 as.character() 而没有任何变化。

【问题讨论】:

    标签: r subset


    【解决方案1】:

    如果有滞后/领先的空格,这可能会发生。删除它们,它应该可以工作。

     library(stringr)
     data[,5] <- str_trim(data[,5])
    

    或者

     data[,5] <- gsub('^\\s+|\\s+$', '', data[,5])     
     data[data[,5]=='Y',]
    

    另一个不删除空格的选项是grep

     data[grep('\\bY\\b', data[,5]),]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2019-02-04
      • 2018-04-26
      • 2022-07-23
      相关资源
      最近更新 更多