在数据框R的日期列中填写NA s

在数据框R的日期列中填写NA s,r,dplyr,R,Dplyr,我的数据是这样的 > 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

我的数据是这样的

> 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
>最终版本
身份证日期
1  1       
2  1       
3  1 2015-01-01
4  1       
5  2       
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
>最终百分比
+分组依据(ID)%>%
+变异(日期=zoo::na.locf(如日期(Date,origin=“1970-01-01”))
错误:大小不兼容(2),应为4(组大小)或1

在此问题上的任何帮助都将不胜感激

我们需要
na.rm=FALSE
。默认情况下,它是
na.rm=TRUE
,在开始时删除
na
值,以便输出的元素数比原始数据集中的元素数少。只有当输出元素的长度与原始数据集的长度相同时,
dplyr::mutate
才会起作用

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
图书馆(动物园)
图书馆(dplyr)
样本%>%
分组依据(ID)%>%
变异(日期=na.locf(as.Date(日期,起源=1970-01-01'),na.rm=FALSE))
#身份证日期
#(内部)(日期)
#1     1       
#2     1       
#3     1 2015-01-01
#4     1 2015-01-01
#5     2       
#6     2 2015-01-01
#7     2 2015-01-01
#8     2 2015-01-01

我认为您的预期输出有误。第四个元素不应该是“2015-01-01”吗?