[英]Interpolation/extrapolation by group in R
我有这种类型的数据库,其中包含按国家和年份划分的变量 x1 和 x2 的数据。
iso3 year x1 x2
ATG 2010 NA NA
ATG 2011 NA NA
ATG 2012 144 277
ATG 2013 45 NA
ATG 2014 NA NA
ATG 2015 NA NA
ATG 2016 45 NA
ATG 2017 NA NA
ATG 2018 NA 421
BEL 2010 NA 434
BEL 2011 NA 422
BEL 2012 NA 424
BEL 2013 282 429
BEL 2014 NA 435
BEL 2015 NA NA
BEL 2016 NA NA
BEL 2017 282 429
BEL 2018 NA 435
我想在观察点和外推之间进行线性插值,假设趋势平坦(在第一个观察点之前和最后一个观察点之后)。 我尝试了以下...没有成功。
hwf_2000 <- uhc_hwf %>%
group_by(iso3)%>%
na.approx(uhc_hwf)
我收到此错误消息:
Error in na.approx.default(., uhc_hwf) :
x and index must have the same length
能否请你帮忙?
非常感谢,
我们可以将na.approx
用于多个变量,其中na.rm = FALSE
用于插值和 @G。 Grothendieck 评论了在na.approx
使用rule = 2
进行外推。
library(dplyr)
library(zoo)
df %>%
group_by(iso3)%>%
mutate_at(vars(x1, x2), list(inter = ~na.approx(., na.rm = FALSE),
outer = ~na.approx(., rule = 2, na.rm = FALSE)))
# iso3 year x1 x2 x1_inter x2_inter x1_outer x2_outer
# <fct> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
# 1 ATG 2010 NA NA NA NA 144 277
# 2 ATG 2011 NA NA NA NA 144 277
# 3 ATG 2012 144 277 144 277 144 277
# 4 ATG 2013 45 NA 45 301 45 301
# 5 ATG 2014 NA NA 45 325 45 325
# 6 ATG 2015 NA NA 45 349 45 349
# 7 ATG 2016 45 NA 45 373 45 373
# 8 ATG 2017 NA NA NA 397 45 397
# 9 ATG 2018 NA 421 NA 421 45 421
#10 BEL 2010 NA 434 NA 434 282 434
#11 BEL 2011 NA 422 NA 422 282 422
#12 BEL 2012 NA 424 NA 424 282 424
#13 BEL 2013 282 429 282 429 282 429
#14 BEL 2014 NA 435 282 435 282 435
#15 BEL 2015 NA NA 282 433 282 433
#16 BEL 2016 NA NA 282 431 282 431
#17 BEL 2017 282 429 282 429 282 429
#18 BEL 2018 NA 435 NA 435 282 435
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.