在数据帧R的日期列中输出NA

时间:2016-04-10 14:00:24

标签: 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       <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

非常感谢有关此问题的任何帮助

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