打印日期对应于数据帧子集中的最后一个非NA值

时间:2015-08-13 15:19:47

标签: r

我正在尝试提取与大面板数据集的最后可用值(值)对应的日期(年)。由于我的数据需要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) 

即,对于每个组(按国家,指标和版本数据),可用值的日期。我希望我能表达得足够好。

0 个答案:

没有答案