2015-06-11 2 views
2

У меня есть большой набор данных, который выглядит, как это с несколькими сотнями тысяч записей, сохраненных в data:(R) []/подмножество() возвращает пустой кадр данных

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

ответ

3

Если есть отстающие/ведущие пробелы, это может произойти. Удалите их, и он должен работать.

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