我对R还很陌生,因此不得不用一个基本问题来打扰你。
我有两个大型面板数据集(60个变量,每个变量来自30个国家,范围从1950-2013年)。这60个变量具有相同的名称,数据可能不同也可能不同。
我的最终目标是创建60个网格,每个网格包含30个图:每个网格引用60个变量中的一个,并包含每个国家的图。每个图将包含两个折线图,一个来自第一个数据帧,另一个来自第二个数据帧(每个变量相同)。
我以前在Stata中使用过全局变量和一个简单的循环来实现这一点。我一直在努力让这项工作在R。
我现在将数据转换为宽格式(列:日期、国家、指标1、…指标60),但已经了解到ggplot2在长格式(?)下表现更好。
我的主要问题是如何循环(for,lapply,function..)。
如果没有答案,我将非常感谢关于如何解决这个问题的想法或提示,以便我能够在需要时提出更具体的问题。
编辑:根据要求,在可复制的数据样本下方
year <- c(2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013,2010, 2011, 2012,
2013, 2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013, 2010, 2011, 2012,
2013, 2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013)
country <- c(rep("Australia", times =8), rep("Canada", times = 8),
rep("Australia", times =8), rep("Canada", times = 8))
indicator <- c(rep("Apples", times = 16), rep("Bananas", times = 16))
versiondata <- c(rep("new", times = 4), rep("old", times = 4), rep("new",
times = 4), rep("old", times = 4), rep("new", times = 4), rep("old",
times = 4), rep("new", times = 4), rep("old", times = 4))
value <- runif(32)
mydf <- data.frame(year, country, indicator, versiondata, value)
我仍然停留在do的确切表达上。我想到了这个遗憾的地方,我不知道如何指定两个y变量(对应于列versiondata中的旧变量和新变量)。
mydf %>%
group_by(indicator) %>%
do({
p <- ggplot(., aes(x=year)) +
geom_line(aes(y = ???))
+ facet_wrap(~country) + ggtitle("indicator")
})