处理Panel数据集

时间:2018-04-29 13:55:03

标签: r dataset panel na

假设我有这个数据集:

library(data.table)
comb <- CJ(1:4, 2005:2008) 
comb$var3 <- c(1, NA, 2, NA, 3, NA, 4, NA, 5, NA, 6, NA, 7, NA, 8, NA)

我想根据以前的值填写NA。例如,我想要Id 1&amp; 2006年的价值1. 2008年的价值2.其他ID的价值相同。最后,数据集应如下所示:

library(data.table)
comb <- CJ(1:4, 2005:2008) 
comb$var3 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8)

我怎样才能实现它?

1 个答案:

答案 0 :(得分:1)

我们可以使用na.locf

library(zoo)
comb[, var3 := na.locf(var3)]
comb
#    V1   V2 var3
# 1:  1 2005    1
# 2:  1 2006    1
# 3:  1 2007    2
# 4:  1 2008    2
# 5:  2 2005    3
# 6:  2 2006    3
# 7:  2 2007    4
# 8:  2 2008    4
# 9:  3 2005    5
#10:  3 2006    5
#11:  3 2007    6
#12:  3 2008    6
#13:  4 2005    7
#14:  4 2006    7
#15:  4 2007    8
#16:  4 2008    8

基于该示例,以下内容也应该起作用

comb[, var3 := cumsum(!is.na(var3))]