使用上一列

时间:2018-01-18 16:37:36

标签: r

我有一些data.frame,其中一些列缺少值,我希望用前一列的数据填充缺失的值。例如:

country <- c('a','b','c')
yr01 <- c(15,16,7)
yr02 <- c(NA,18,NA)
yr03 <- c(20,22,NA)
yr04 <- c(15,18,19)

tab <- data.frame(country,yr01,yr02,yr03,yr04)
tab

  country yr01 yr02 yr03 yr04
1       a   15   NA   20   15
2       b   16   18   22   18
3       c    7   NA   NA   19

如何才能使NA被之前的值替换?例如,在国家/地区ayr02将等于 15 ,而在国家cyear02yr03 7 。谢谢!

1 个答案:

答案 0 :(得分:2)

使用列通常更容易,但我们可以apply对R-FAQ Replace NAs with latest non-NA value中的标准答案进行排序。

tab[-1] = t(apply(tab[-1], 1, zoo::na.locf))
tab
#   country yr01 yr02 yr03 yr04
# 1       a   15   15   20   15
# 2       b   16   18   22   18
# 3       c    7    7    7   19