excel 考勤分析

brc7rcf0  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(115)

[![在此处输入图像说明][1]][1]
我试图分析员工的上班打卡和下班打卡,但系统显示员工在一天中的上班打卡和下班打卡重复,因此我们希望删除这些重复项,以便显示员工的第一个上班打卡和最后一个下班打卡。删除重复项后,我们需要统计在特定时间间隔(如8:00之前、8:00之后、8:00和8:30之间等)上班打卡的员工数量。此数据是在一个月的时间段内记录的。我还希望从数据中删除一些空白时间戳。您有什么建议吗?
我试着在Excel中使用“countifs”函数,但这是一个漫长而乏味的过程,因为有超过100,000个时间戳。This is the expected output for clock-out time

eeq64g8w

eeq64g8w1#

这里有一个方法来做这个问题所要求的。
代码的第一部分读取数据文件。如果已经完成,则忽略它。

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 26436

相关问题