我试图分析员工的进进出出的时间,但系统显示的是员工白天进进出出的时间重复,所以我们想要删除这些副本,以便显示员工的第一个时钟和最后一个时钟。删除副本后,我们需要在特定的时间间隔内,例如8:00之前、8:00之后、8:00至8:30之间等,计算出计时的员工人数。这些数据记录了一个月的时间。也有空白的时间戳,我想从数据中删除。有什么建议吗?
我试着在Excel上使用"countifs“函数,但这是一个漫长而乏味的过程,因为有超过10万张时间戳。这是时钟的预期输出。
发布于 2022-11-16 12:46:54
这是一种做问题要求的方法。
代码的第一部分读取数据文件。如果已经做了就忽略它。
path <- "~/StackOverflow/TNPA_Clocks"
flname <- list.files(path, pattern = "\\.xlsx", full.names = TRUE)
basename(flname)
# [1] "Copy of TNPA Clocks - September 2022 (002).xlsx"
df1 <- readxl::read_excel(flname)现在是处理。由于只有时间是相关的,我认为所有的记录都在同一天,然后cut的日期和时间向量点16:00,16:30,17:00。最后,给出结果并强制data.frame。
d <- Sys.Date()
datetime <- with(df1, paste(d, Start))
datetime <- as.POSIXct(datetime, format = "%Y-%m-%d %H:%M:%S")
#
breaks <- c("00:00:00", "16:00:00", "16:30:00", "17:00:00", "23:59:59")
breaks <- as.POSIXct(paste(d, breaks))
labels <- c("Before 16:00", "16:00-16:30", "16:31-17:00", "17:00 onward")
#
End_Category <- cut(datetime, breaks = breaks, labels = labels)
as.data.frame(table(End_Category))
# End_Category Freq
#1 Before 16:00 89800
#2 16:00-16:30 10867
#3 16:31-17:00 3827
#4 17:00 onward 26436https://stackoverflow.com/questions/74457512
复制相似问题