我有数据集,哪些列是
date
,time_id
,num_travel
。例如
date time_id num_travel
02/25/2013 6 23
02/25/2013 7 20
02/25/2013 8 55
02/25/2013 9 89
02/25/2013 10 150
02/25/2013 11 100
...
02/27/2013 1 20
...
time_id
表示该日期的哪个小时。
num_travel
表示旅行次数。
time_id
的范围是1天至1-24,但每天总是随机丢失1〜6。如何添加带有num_travel
的行(将此值初始化为0),例如
03/24/2013 2 0 # (the data not exist in dataset, but need to be added)
由于数据集随机丢失time_id
从1到6,因此很难构建这些行。我需要R中的一些帮助来进行数据清理。
答案 0 :(得分:1)
我不确定您是否正确理解了您的问题,所以我给您两个答案。我只使用基本R。
library(lubridate)
df <- data.frame(date = mdy(c(rep("02/25/2013", 6), "02/27/2013")),
time_id = c(6:11, 1),
num_travel = c(23, 20, 55, 89, 150, 100, 20))
want_to_add <- data.frame(date = mdy("03/27/2013"),
time_id = 2,
num_travel = 0)
第一个答案,如果您只需要添加几行:
rbind(df, want_to_add)
如果您有很多丢失的数据,并且想要一个伪Complet数据库为0,则可以为变量num_travel
构建一个只有0的complet,然后添加您已经知道的num_travel
:
# vector of Date
date_start <- as.POSIXct("2013-02-25 01:00:00", tz = "GMT")
date_end <- as.POSIXct("2013-03-27 01:00:00", tz = "GMT")
Date <- seq(date_start, date_end, by="hour")
# complet data set with 0 for num_travel
df_res <- data.frame(date = as.Date(Date), time_id = hour(Date) + 1, num_travel = 0)
# add what you know
df_res[paste(df_res$date, df_res$time_id) %in% paste(df$date, df$time_id), ]$num_travel = df$num_travel