我有一个日历天和每小时观测值的数据框,并具有以下关联值:
startTime Hour delay
04-22 0 10
04-22 1 10
04-22 3 10
04-22 4 10
需要的是一天中的所有小时,并且与所说的小时数相关联的是0,而不是没有值或NA。如何最好地实现?我曾尝试从dplyr使用完全虚拟数据帧进行full_join,但此方法似乎笨拙且效率低下。
简而言之,我需要这个:
startTime Hour delay
04-22 0 10
04-22 1 10
04-22 2 0
04-22 3 10
04-22 4 10
最佳答案
您可以使用data.table
有效地联接数据集。将“ data.frame”转换为“ data.table (
setDT(df1)), set the key columns (
setkey(..,startTime,Hour)`),并结合使用“ startTime”和“ Hour”的唯一值,并将延迟的NA值替换为“ 0”
library(data.table)
setkey(setDT(df1), startTime, Hour)[CJ(startTime=unique(startTime),
Hour=min(Hour):max(Hour))][is.na(delay), delay:=0L]
# startTime Hour delay
#1: 04-22 0 10
#2: 04-22 1 10
#3: 04-22 2 0
#4: 04-22 3 10
#5: 04-22 4 10
或者使用
merge/expand.grid
中的base R
,我们可以获得以上结果merge(expand.grid(startTime=unique(df1$startTime),
Hour= min(df1$Hour):max(df1$Hour)), df1, all.x=TRUE)
关于r - 估算缺失的观测值R,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30532896/