Условное построение, если переменная равна определенной строке в R

#r #panel-data #plotrix

#r #панель-данные #plotrix

Вопрос:

У меня есть набор данных панели временных рядов, аналогичный следующему формату, где V1 — символ (здесь A, B, C …), а V2 — числовой (5,8,6 …). У меня есть 65 разных элементов в V1 (всего около 50000 нечетных наблюдений). Я пытаюсь найти способ построения графика V2 при условии, что V1 = A или B и так далее. Что я могу просто сделать plot(V1[1:1065]) , plot([V1:1066:2085]) и так далее, но я искал надежный способ сделать это. Пробовал что-то вроде этого:

 if(V1 == 'A') plot(V2)
  

Но поскольку ‘if’ в R не принимает векторы, он выдает сообщение об ошибке, "the condition has length > 1 and only the first element will be used"

 V1 V2      Date

A   5   01/01/2014

A   8   08/01/2014

B   6   15/01/2014

C   9   22/01/2014

C   6   29/01/2014

D   3   05/02/2014

-   -   -

-   -   -

-   -   -

-   -   -

X   8   12/03/2014

Y   5   19/03/2014

Z   5   26/03/2014
  

Может кто-нибудь, пожалуйста, предложить что-нибудь?

Комментарии:

1. Вы хотите, чтобы 65 отдельных графиков или несколько / все строки на уникальное значение V1 были объединены в один график?

2. Вы attach сохранили свои данные? Ваше использование имен столбцов внутри if выглядит так. Просто обратите внимание, что его широко не рекомендуется использовать attach при написании сценариев. Лучше узнайте, как подмножество, используя [] и $ .

3. Спасибо за совет! Я использую $ now вместо attach ..

4. Приятно это слышать. Убедитесь, что вы также проверили ?with , что также полезно во многих ситуациях.

Ответ №1:

Предполагая, что все они хранятся в вызываемом data.frame dd , тогда вы могли бы сделать

 plot(V2~Date, data=subset(dd, V1=="A"))
  

Это должно привести к построению графика для всех значений «A» в V1.