Как построить данные панели в R? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть следующий CSV-файл:


  id year  item valuesound growtharea
1 16 2005 Wheat   9784.490         NA
2 16 2006 Wheat  10020.720  0.0241437
3 16 2007 Wheat   9232.796 -0.0786298
4 16 2008 Wheat   8567.893 -0.0720154
5 16 2009 Wheat  10292.670  0.2013073
6 16 2010 Wheat   9274.589 -0.0989134

После plm панель выглядит следующим образом:

> library(plm)
> panel <- pdata.frame(data, index = c("id", "year"), drop.index = TRUE)
> head(panel)
         item valuesound growtharea
16-2005 Wheat   9784.490         NA
16-2006 Wheat  10020.720  0.0241437
16-2007 Wheat   9232.796 -0.0786298
16-2008 Wheat   8567.893 -0.0720154
16-2009 Wheat  10292.670  0.2013073
16-2010 Wheat   9274.589 -0.0989134

У меня проблемы с графикой этой панели. Я хотел бы создать линейный график с ggplot2, чтобы он показывал линию каждого "id" через год "значения" valuesound ".

Я пробовал с ggplot2

ggplot(panel, mapping = aes(x = year, y = value, group = id)) +
   geom_line()

Но всегда у меня возникают ошибки, такие как «Ошибка в FUN (X [[i]], ...): объект 'year' not found". Я не знаю, где ошибка. Я изменил drop.index = FALSE, но все же не могу создать красивый график с цветами для каждой линии. Не могли бы вы помочь мне создать график, используя данные этой панели?

1 Ответ

0 голосов
/ 16 апреля 2020

Исходный набор данных содержит отдельные переменные id и year, которые вам необходимо отобразить для изменения valuesound с течением времени. Нет необходимости менять значение на pdata.frame, так как при этом индексируются переменные id и year.

Я думаю, это то, что вы ищете:

library(ggplot2)

# where object df is your original dataset
ggplot(df, mapping = aes(x = year, y = valuesound)) +
  geom_line(aes(linetype = as.factor(id)))

enter image description here

...