根据两列匹配填充缺失数据

时间:2021-03-26 16:47:27

标签: r data-cleaning

我有一个数据集,数据集中的前三个变量如下所示:

id <- c(I-0009,I-0009,I-0009,I-0009,I-0009)
occasion<- c(1,1,2,2,3) 
time < - c(37800, NA, 54000, NA, 61200) 

实际数据集更长,有数千个 ID 和更多变量。有随机时间随机丢失的数据。有没有办法估算缺失的时间值。如果 ID 和场合匹配,那么我想估算也匹配的时间。所以对于这个截断的例子,灵魂是:

id <- c(I-0009,I-0009,I-0009,I-0009,I-0009)
occasion<- c(1,1,2,2,3) 
time < - c(37800, 37800, 54000, 54000, 61200) 

1 个答案:

答案 0 :(得分:0)

你可以这样做:

library(dplyr)
df <- data.frame(id = c("I-0009","I-0009","I-0009","I-0009","I-0009"),
                 occasion = c(1,1,2,2,3), 
                 time = c(37800, NA, 54000, NA, 61200))
df %>% 
    group_by(id, occasion) %>% 
    tidyr::fill(time, .direction = "down")

警告:在输入之前,您需要确保 time 对于每个 id-occasion 组都是唯一的。此外,如果根据 NA 值的位置,您可能需要更改 .direction 函数中的 fill 参数。