【问题标题】:FIll up NA s in date column of dataframe R [duplicate]填写数据框 R 的日期列中的 NA [重复]
【发布时间】:2016-07-31 13:17:09
【问题描述】:

我的数据是这样的

> 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

任何关于这个问题的帮助将不胜感激

【问题讨论】:

  • 我认为您的预期输出中有错字。第 4 个元素不应该是“2015-01-01”吗?

标签: r dplyr


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2020-05-12
    • 2015-01-28
    • 1970-01-01
    • 2020-03-27
    • 2019-11-22
    相关资源
    最近更新 更多