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