(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() без изменений.

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]),]
Другие вопросы по тегам