我有这样的数据,我需要填写缺失的NA值为DATE.

      ID   DAY  TIME DATE      
   <dbl> <dbl> <dbl> <date>    
 1     1     1     1 NA        
 2     1     1     2 NA        
 3     1     1     3 NA        
 4     1     1     4 NA        
 5     1     1     5 NA        
 6     1     2     1 2021-09-25
 7     1     2     2 2021-09-25
 8     1     2     3 2021-09-25
 9     1     2     4 2021-09-25
10     1     2     5 2021-09-25
11     1     3     1 NA        
12     1     3     2 NA        
13     1     3     3 NA        
14     1     3     4 NA        
15     1     3     5 NA        
16     2     1     1 2022-02-26
17     2     1     2 2022-02-26
18     2     1     3 2022-02-26
19     2     1     4 2022-02-26
20     2     1     5 2022-02-26
21     2     2     1 NA        
22     2     2     2 2022-02-27
23     2     2     3 2022-02-27
24     2     2     4 2022-02-27
25     2     2     5 2022-02-27

DAY对应的DATE值对于每个ID都是不同的.最终的数据集应该如下所示:

# A tibble: 25 × 4
      ID   DAY  TIME DATE      
   <dbl> <dbl> <dbl> <chr>     
 1     1     1     1 2021-09-24
 2     1     1     2 2021-09-24
 3     1     1     3 2021-09-24
 4     1     1     4 2021-09-24
 5     1     1     5 2021-09-24
 6     1     2     1 2021-09-25
 7     1     2     2 2021-09-25
 8     1     2     3 2021-09-25
 9     1     2     4 2021-09-25
10     1     2     5 2021-09-25
11     1     3     1 2021-09-26
12     1     3     2 2021-09-26
13     1     3     3 2021-09-26
14     1     3     4 2021-09-26
15     1     3     5 2021-09-26
16     2     1     1 2022-02-26
17     2     1     2 2022-02-26
18     2     1     3 2022-02-26
19     2     1     4 2022-02-26
20     2     1     5 2022-02-26
21     2     2     1 2022-02-27
22     2     2     2 2022-02-27
23     2     2     3 2022-02-27
24     2     2     4 2022-02-27
25     2     2     5 2022-02-27

推荐答案

一种方法是根据已知日期确定"零"日期,并在给定ID内使用fill个共享同一参考日期.然后,您可以使用参考日期加DAY来确定最终的DATE.

library(tidyverse)

df %>%
  mutate(DATE = as.Date(DATE),
         DATE0 = DATE - DAY) %>%
  group_by(ID) %>%
  fill(DATE0, .direction = "updown") %>%
  mutate(DATE = DATE0 + DAY) %>%
  select(-DATE0)

Output

      ID   DAY  TIME DATE      
   <int> <int> <int> <date>    
 1     1     1     1 2021-09-24
 2     1     1     2 2021-09-24
 3     1     1     3 2021-09-24
 4     1     1     4 2021-09-24
 5     1     1     5 2021-09-24
 6     1     2     1 2021-09-25
 7     1     2     2 2021-09-25
 8     1     2     3 2021-09-25
 9     1     2     4 2021-09-25
10     1     2     5 2021-09-25
11     1     3     1 2021-09-26
12     1     3     2 2021-09-26
13     1     3     3 2021-09-26
14     1     3     4 2021-09-26
15     1     3     5 2021-09-26
16     2     1     1 2022-02-26
17     2     1     2 2022-02-26
18     2     1     3 2022-02-26
19     2     1     4 2022-02-26
20     2     1     5 2022-02-26
21     2     2     1 2022-02-27
22     2     2     2 2022-02-27
23     2     2     3 2022-02-27
24     2     2     4 2022-02-27
25     2     2     5 2022-02-27

Data

df <- structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), 
    DAY = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), TIME = c(1L, 
    2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 
    2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), DATE = c(NA, NA, NA, 
    NA, NA, "2021-09-25", "2021-09-25", "2021-09-25", "2021-09-25", 
    "2021-09-25", NA, NA, NA, NA, NA, "2022-02-26", "2022-02-26", 
    "2022-02-26", "2022-02-26", "2022-02-26", NA, "2022-02-27", 
    "2022-02-27", "2022-02-27", "2022-02-27")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25"))

R相关问答推荐

计算满足R中条件的连续列

将二进制数据库转换为频率表

如何在PackageStatus()中列出&q;不可用的包&q;?

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

如何根据数据帧中的值从该数据帧中提取值?

如何将网站图像添加到带有极坐标的面包裹条形图?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

根据纬度和距离连接两个数据集

观察器中的inaliateLater的位置

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

具有由向量定义的可变步长的序列

如何在R中添加标识连续日期的新列

有没有一种方法可以用非标准参数编写一个定制的ggploy主题函数?

如何在甜甜圈图表中隐藏标签之外

按列对数据进行分组,并判断组中指定列的内容是否相同

将数据框特定列中的数字舍入到最接近的季度

如何将嵌入的情节设计为伪迷你图?

如何转置gtsum tbl_sum对象?

如何在gg散点图中增加自动生成的R和p值的字体大小?