java实现线性填充空值_在R中填充缺失值的时间序列数据

我正在尝试将我的面板数据中的年度值扩展到年度季度值 . 这是每个季度重复的年度值 . 例如,我希望获得2000Q1,2000Q2,2000Q3,2000Q4,2001Q1,......,2001Q4的年度收入的重复值 . 因此数据框将是id,年度季度,收入 .

我使用两步法,但有一些问题需要处理 . 如果缺少季度起始值,那么我将需要季度缺失(NA) .

情况1:

annual_data

person=c(1, 1, 1, 2, 2,2),

year=c(2010, 2011, 2012, 2010, 2011, 2012),

income=c(4, 10, 13, 1, NA, 30)

)

案例2:

annual_data

person=c(1, 1, 1, 2, 2,2),

year=c(2010, 2011, 2012, 2010, 2011, 2012),

income=c(4, 10, 13, NA, NA, 30)

)

所以使用如下函数:

expand

years

quarters

grid

x$quarter

merged % left_join(x, by=c('year', 'quarter'))

merged$person

return(merged)

}

然后我用了

zoo::na.locf

dplyr::mutate.

quarterlydata % group_by(person) %>% do(expand(.))

testdata % group_by(person) %>% mutate(ynew=zoo::na.locf(y))

但是没有多少运气,因为它从前面的非缺失值复制到所有缺失值 . 那是,

案例1:它复制了所有 Value ,因此第2人的收入1被复制到2010年和2011年 . 当必须复制到2010年时,2011年应该是NAs .

案例2:我明白了

Error: incompatible size (%d), expecting %d (the group size) or 1.

有关我失踪的地方的任何想法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值