我正在尝试提取与大面板数据集的最后可用值(值)对应的日期(年)。由于我的数据需要besubset,我使用的是do和group_by。打印最后一个日期的实际内部函数在一次性尝试期间对我有用,但我无法在此循环框架中使用它。
我试过了:
last_observation <- mydf %>%
group_by(indicator, country, version) %>%
do({
x <- which(!is.na(value))
print(mydf$year[max(x)])
})
但是这会产生错误:&#34;错误:结果不是位置上的数据帧:(在这里插入一堆位置)&#34;。
有什么建议吗?对不起,如果这个问题太基本了,我本周才开始学习R.
编辑:添加了可重复的样本数据。
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 <- c(runif(3), "NA", runif(2), "NA", "NA", runif(23), "NA")
mydf <- data.frame(year, country, indicator, versiondata, value)
理想情况下,我从这个样本df中需要的是一个向量,如下所示:
c(2012,2011,2012,2012,2012,2012,2012,2012)
即,对于每个组(按国家,指标和版本数据),可用值的日期。我希望我能表达得足够好。