(R)[]/subset()返回空数据框 [英] (R) [] / subset() returns an empty data frame

查看:0
本文介绍了(R)[]/subset()返回空数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个很大的数据集,它看起来像这样,还有几十万个条目,另存为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", ]

同样的问题。

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

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

还返回一个空数据框。

STR_FARE_Category_Ident当前是一个因素,但我也尝试在没有更改的情况下将其更改为as.Character()。

推荐答案

如果存在滞后/前导空格,则可能会发生这种情况。去掉这些,它应该会起作用。

 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]),]

这篇关于(R)[]/subset()返回空数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆