当我知道每个增量/减量应为1时,我试图按组递增和递减地填写缺失的年份值。这是一个可重现的示例。请注意,有两个ID,第一个ID始于2002年(尽管缺少),第二个ID始于2007年(同样也丢失)。我从现有的一年以及增加/减少应为1.的事实知道这一点。
id <- rep(c("01012895", "01021890"), each = 6) value <- c(rnorm(12)) year <- c("NA", "NA", 2004, "NA", "NA", 2007, "NA", "NA", "NA", 2010, "NA", "NA") df <- data.frame(id, value, year) df id value year 1 01012895 -1.05853432 NA 2 01012895 0.06480395 NA 3 01012895 -3.32811206 2004 4 01012895 -0.33427578 NA 5 01012895 -0.22790538 NA 6 01012895 1.46991465 2007 7 01021890 -0.65928777 NA 8 01021890 -0.25701765 NA 9 01021890 1.24331689 NA 10 01021890 0.10006530 2010 11 01021890 -0.83971071 NA 12 01021890 1.15893263 NA
df2是我最终想要的。
year2 <- c(2002:2007, 2007:2012) df2 <- data.frame(id, value, year2)
我已经尝试过使用
fill
来解决问题,就像df3
一样,但是它只包含现有值,而没有更改它的选项。
df3 <- df %>% group_by(site_no) %>% fill(year, .direction = "updown")
当我知道每个增量/减量应为1时,我试图按组递增和递减地填写缺失的年份值。这是一个可重现的示例。请注意,有两个ID ...
这里是一种方法。