R用非NA值的增量/减量替换NAs
当我知道每个增量/减量应该是1时,我试图通过一个组以增量和减量的方式来填充缺失的年份值。这里有一个可复制的例子。注意,有两个id,第一个id在2002年开始(尽管缺少),第二个id在2007年开始(同样缺少)。我从现有年份就知道这一点,事实上增量/减量应为1R用非NA值的增量/减量替换NAs,r,replace,dplyr,na,R,Replace,Dplyr,Na,当我知道每个增量/减量应该是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", 20
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
这里有一个方法 首先,您自己的数据:
ID01012895 0.0482 2002
#> 2 01012895 -0.445 2003
#> 3 01012895 0.459 2004
#> 4 01012895 -0.740 2005
#> 5 01012895 1.91 2006
#> 6 01012895 -1.66 2007
#> 7 01021890 -1.08 2007
#> 8 01021890 -0.816 2008
#> 9 01021890 0.395 2009
#> 10 01021890 -0.0294 2010
#> 11 01021890 0.397 2011
#> 12 01021890 0.273 2012
全部(df2==df3)
#>[1]是的
它确实发出了警告,可以忽略
year2 <- c(2002:2007, 2007:2012)
df2 <- data.frame(id, value, year2)
df3 <- df %>% group_by(site_no) %>% fill(year, .direction = "updown")