为缺少时间步骤添加行的最快方法?

为缺少时间步骤添加行的最快方法?

我的数据集中有一列,其中时间段(Time)是从ab开始的整数。有时,任何特定组都可能缺少时间段。我想用这些行填写NA。以下是1(几千个)组的示例数据。


structure(list(Id = c(1, 1, 1, 1), Time = c(1, 2, 4, 5), Value = c(0.568780482159894, 

-0.7207749516298, 1.24258192959273, 0.682123081696789)), .Names = c("Id", 

"Time", "Value"), row.names = c(NA, 4L), class = "data.frame")



  Id Time      Value

1  1    1  0.5687805

2  1    2 -0.7207750

3  1    4  1.2425819

4  1    5  0.6821231

如您所见,时间3缺失。通常一个或多个可能会丢失。我可以自己解决这个问题,但恐怕我不会以最有效的方式做到这一点。我的方法是创建一个函数:


生成时间段从序min(Time)到max(Time)


然后做一个setdiff抓取缺失的Time值。


将该向量转换为a data.frame


拉出唯一标识符变量(Id以及上面未列出的其他变量),并将其添加到此data.frame中。


合并两者。


从功能返回。


因此整个过程将按如下方式执行:


   # Split the data into individual data.frames by Id.

    temp_list <- dlply(original_data, .(Id)) 

    # pad each data.frame

    tlist2 <- llply(temp_list, my_pad_function)

    # collapse the list back to a data.frame

    filled_in_data <- ldply(tlist2)

更好的方法来实现这一目标


慕容森
浏览 512回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP