我的数据看起来像这样
> sample
ID Date
1 1 NA
2 1 NA
3 1 16436
4 1 NA
5 2 NA
6 2 16436
7 2 NA
8 2 NA
我想要的数据集是
> final
ID Date
1 1 <NA>
2 1 <NA>
3 1 2015-01-01
4 1 <NA>
5 2 <NA>
6 2 2015-01-01
7 2 2015-01-01
8 2 2015-01-01
我正在使用的代码是
> final <- sample %>%
+ group_by(ID) %>%
+ mutate(Date = zoo:: na.locf(as.Date(Date,origin= "1970-01-01")))
Error: incompatible size (2), expecting 4 (the group size) or 1
非常感谢有关此问题的任何帮助
答案 0 :(得分:1)
我们需要na.rm=FALSE
。默认情况下,它是na.rm=TRUE
,它会删除开头的NA
值,以便输出的元素数量少于原始数据集中的元素数量。仅当输出元素与原始数据集具有相同的dplyr::mutate
时,length
才有效。
library(zoo)
library(dplyr)
sample %>%
group_by(ID) %>%
mutate(Date = na.locf(as.Date(Date, origin = '1970-01-01'), na.rm=FALSE))
# ID Date
# (int) (date)
#1 1 <NA>
#2 1 <NA>
#3 1 2015-01-01
#4 1 2015-01-01
#5 2 <NA>
#6 2 2015-01-01
#7 2 2015-01-01
#8 2 2015-01-01