首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考勤时间分析

考勤时间分析
EN

Stack Overflow用户
提问于 2022-11-16 08:45:10
回答 1查看 44关注 0票数 -1

我试图分析员工的进进出出的时间,但系统显示的是员工白天进进出出的时间重复,所以我们想要删除这些副本,以便显示员工的第一个时钟和最后一个时钟。删除副本后,我们需要在特定的时间间隔内,例如8:00之前、8:00之后、8:00至8:30之间等,计算出计时的员工人数。这些数据记录了一个月的时间。也有空白的时间戳,我想从数据中删除。有什么建议吗?

我试着在Excel上使用"countifs“函数,但这是一个漫长而乏味的过程,因为有超过10万张时间戳。这是时钟的预期输出。

EN

回答 1

Stack Overflow用户

发布于 2022-11-16 12:46:54

这是一种做问题要求的方法。

代码的第一部分读取数据文件。如果已经做了就忽略它。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74457512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档