我有一个数据框架,其中包含12个南美国家超过40年的GDP值。框架的片段如下:
168 Chile 1244.1799 1972
169 Chile 4076.3207 1994
170 Chile 3474.7172 1992
171 Chile 2928.1562 1991
172 Chile 6143.7276 2004
173 Colombia 882.5687 1976
174 Colombia 1094.8795 1977
175 Colombia 5403.4557 2008
176 Colombia 2376.8022 2002
177 Colombia 2047.9784 1993
1)我想按国家/地区订购数据框。前40个值应该属于阿根廷,然后是40到玻利维亚等等。
2)在每个国家/地区分组中,我想按年份订购。前三行应与阿根廷2012,阿根廷2011,阿根廷2010等有关。
我可以使用subset()
单独获取每个国家/地区的数据,然后使用order()
进行排序。当然,我不是必须为每个国家/地区执行此操作然后使用rbind()
?如何在一次犯规中做到这一点?
3)一旦我有了最终产品,我想创建12个垂直堆叠的小型单独线图,每个线图与不同的国家相关,这表明该国家的GDP超过了〜40年。我是如何制作这样的情节的?
我确定自己能够找到关于第三个问题的信息,但是,我甚至不知道首先调用这样的图表是什么..
答案 0 :(得分:1)
以下是ggplot2
的解决方案。假设您的数据位于df
:
library(ggplot2)
df$year.as.date <- as.Date(paste0(df$year, "-01-01")) # convert year to date
ggplot(df, aes(x=year.as.date, y=gdp)) +
geom_line() + facet_grid(country ~ .)
您实际上不需要按年份和国家/地区排序,ggplot
会为您处理。这是数据(显然,仅使用5个国家和12年,但这将适用于您的数据)。另外,我将向您展示如何在第三行按两列排序:
countries <- c("ARG", "BRA", "CHI", "PER", "URU")
df <- data.frame(country=rep(countries, 12), year=rep(2001:2012, each=5), gdp=runif(60))
df <- df[order(df$country, df$year),] # <- we sort here
df$gdp <- df$gdp + 1:12 / 2