【发布时间】:2018-08-12 21:45:22
【问题描述】:
如下所示的数据框。 3 名员工每天有每小时读数,但不完整(每名员工每天应有 24 次读数)。
了解员工每天的阅读次数不同。现在只对当天阅读次数最多的员工感兴趣。
有很多天。它希望为当天最多的行插入缺失的(每小时)行。也就是说,2018-03-02 仅插入 Jack’s,2018-03-03 仅插入 David,2018-03-04 仅插入 Kate。
我从this question 尝试了这些行(尽管它们完全没有区分)但没有到达那里。
如何在 R 中完成?
date_time <- c("2/3/2018 0:00","2/3/2018 1:00","2/3/2018 2:00","2/3/2018 3:00","2/3/2018 5:00","2/3/2018 6:00","2/3/2018 7:00","2/3/2018 8:00","2/3/2018 9:00","2/3/2018 10:00","2/3/2018 11:00","2/3/2018 12:00","2/3/2018 13:00","2/3/2018 14:00","2/3/2018 16:00","2/3/2018 17:00","2/3/2018 18:00","2/3/2018 19:00","2/3/2018 21:00","2/3/2018 22:00","2/3/2018 23:00","3/3/2018 0:00","3/3/2018 0:00","3/3/2018 1:00","3/3/2018 2:00","3/3/2018 4:00","3/3/2018 5:00","3/3/2018 7:00","3/3/2018 8:00","3/3/2018 9:00","3/3/2018 11:00","3/3/2018 12:00","3/3/2018 14:00","3/3/2018 15:00","3/3/2018 17:00","3/3/2018 18:00","3/3/2018 20:00","3/3/2018 22:00","3/3/2018 23:00","4/3/2018 0:00","4/3/2018 0:00","4/3/2018 1:00","4/3/2018 2:00","4/3/2018 3:00","4/3/2018 5:00","4/3/2018 6:00","4/3/2018 7:00","4/3/2018 8:00","4/3/2018 10:00","4/3/2018 11:00","4/3/2018 12:00","4/3/2018 14:00","4/3/2018 15:00","4/3/2018 16:00","4/3/2018 17:00","4/3/2018 19:00","4/3/2018 20:00","4/3/2018 22:00","4/3/2018 23:00")
staff <- c("Jack","Jack","Kate","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Jack","Kate","Jack","Jack","Jack","David","David","Jack","Kate","David","David","David","David","David","David","David","David","David","David","David","David","David","David","David","David","David","Jack","Kate","David","David","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Kate","Jack")
reading <- c(7.5,8.3,7,6.9,7.1,8.1,8.4,8.8,6,7.1,8.9,7.3,7.4,6.9,11.3,18.8,4.6,6.7,7.7,7.8,7,7,6.6,6.8,6.7,6.1,7.1,6.3,7.2,6,5.8,6.6,6.5,6.4,7.2,8.4,6.5,6.5,5.5,6.7,7,7.5,6.5,7.5,7.2,6.3,7.3,8,7,8.2,6.5,6.8,7.5,7,6.1,5.7,6.7,4.3,6.3)
df <- data.frame(date_time, staff, reading)
【问题讨论】:
-
你的意思是
library(dplyr);library(tidyr);df %>% mutate(date_time = dmy_hm(date_time)) %>% complete(date_time = seq(from = min(date_time), to = max(date_time), by = "1 hour"), staff, fill = list(reading = 0)) -
@akrun,先生,早上好。感谢您的评论。它给了我:评估错误:找不到函数“dmy_hm”...
-
来自
lubridate。我忘了 -
@akrun。一个不错的,但它可以满足每个人的 3 天。我希望 2018-03-02 仅插入 Jack's,2018-03-03 仅插入 David,2018-03-04 仅插入 Kate。
-
看起来像
df %>% mutate(date_time = dmy_hm(date_time), date = as.Date(date_time)) %>% complete(date_time = seq(as.POSIXct(paste(date[1], "00:00:00"), tz = "GMT"), length.out = 24, by = "1 hour"), staff, fill = list(reading = 0)) %>% select(-date)
标签: r dataframe time-series missing-data