用非NA值的增加/减少替换NA

问题描述 投票:3回答:1

当我知道每个增量/减量应为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 ...

r replace dplyr na
1个回答
3
投票

这里是一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.