我有一些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
被之前的值替换?例如,在国家/地区a
列yr02
将等于 15 ,而在国家c
列year02
和yr03
将 7 。谢谢!
答案 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