2015-03-17 1 views
-1

Мой ДФ:данных Подмножество ошибка в R с помощью% в% подстановочный

> str(merged) 
'data.frame': 714 obs. of 9 variables: 
$ Date   : Date, format: "2013-03-29" "2013-03-29" "2013-03-29" "2013-03-29" ... 
$ patch  : Factor w/ 7 levels "BVG1","BVG11",..: 1 2 3 4 5 6 7 1 2 3 ... 
$ prod   : num 2.93 2.77 2.86 2.87 3.01 ... 
$ workmix_pct : int 100 10 16 13 17 21 22 100 11 19 ... 
$ jobcounts : int 9480 968 1551 1267 1625 1946 2123 7328 810 1374 ... 
$ travel  : num 30.7 34.3 33.8 29.1 28.1 24.9 34 31.8 32.7 36.4 ... 
$ FWIHweeklyAvg: num 1.63 4.48 3.1 1.36 1.55 ... 
$ CST.NAME  : Factor w/ 7 levels "Central Scotland",..: 4 2 3 1 5 7 6 4 2 3 ... 
$ month  : chr "March" "March" "March" "March" ... 

> head(merged) 
     Date patch  prod workmix_pct jobcounts travel FWIHweeklyAvg    CST.NAME month 
1 2013-03-29 BVG1 2.932208   100  9480 30.7  1.627024    Scotland March 
2 2013-03-29 BVG11 2.769156   10  968 34.3  4.475714 Highlands & Islands March 
3 2013-03-29 BVG12 2.857344   16  1551 33.8  3.098571 North East Scotland March 
4 2013-03-29 BVG13 2.870111   13  1267 29.1  1.361429  Central Scotland March 
5 2013-03-29 BVG14 3.011260   17  1625 28.1  1.550000 South East Scotland March 
6 2013-03-29 BVG15 3.236246   21  1946 24.9  1.392857 West Central Scotland March 

Я пытаюсь Подмножество на патч BVG1 по:

data=merged[patch %in% c("BVG1"),] 

Но получаю сообщение об ошибке:

Error in match(x, table, nomatch = 0L) : object 'patch' not found 

Не понимаю, почему ...

Я пытаюсь p Много отдельных таймсерия на патч с помощью ggplot

Это то, что я пробовал:

ggplot(data=merged, aes(x=merged$Date, y=merged$prod, group=patch)) + geom_line() + xlab("") + ylab("Weekly Prods")+ scale_x_date(labels = date_format("%b-%Y"),breaks = "1 month") 

Строит все участки на одном графике ... Но я хочу, чтобы показать только BVG1 таймсерий и это то, что я пытался :

ggplot(data=merged[patch %in% c("BVG1"),], aes(x=merged$Date, y=merged$prod, group=patch)) + geom_line() + xlab("") + ylab("Weekly Prods")+ scale_x_date(labels = date_format("%b-%Y"),breaks = "1 month") 

Но с той же ошибкой.

Любые идеи?

UPDATE

Проблема решена с помощью [merged$patch %in% c("BVG1"),]

+0

Пожалуйста, разместите свое обновление как отдельный вопрос, поскольку оно не связано с оригиналом. –

ответ

1

Попробуйте

data=merged[merged$patch %in% c("BVG1"),] 

Это должно решить ваши проблемы. patch определяется в вашем фреймворке данных, поэтому вам нужно сообщить R, где его найти.

Кроме того, вы можете посмотреть facet_wrap вместо подмножества. Например, добавление + facet_wrap(~ patch) к вашей команде plot должно показать вам все патчи сразу. Я не уверен, что это то, что вы хотите, как выход, но я думал, что я должен указать это как идею ...

+0

В этом случае вы не можете просто «==» BVG1 «', а не '% in% c (« BVG1 »)'? –

+3

Не должно быть данных = слито [объединено $ patch% in% c ("BVG1"),]? –

+0

Спасибо, CactusWoman за то, что указали это! Я исправил это. – coffeinjunky

2

Вы также мог бы сделать

data <- subset(merged, patch == "BVG1") 

Поскольку вы только кондиционер на patch существ единственное значение, вам не нужно %in%, вы можете просто проверить на равенство.

Когда вы используете subset(), R автоматически интерпретирует переменные, на которые ссылаются в контексте фрейма данных, поэтому merged$patch не является необходимым.

Смежные вопросы