查看原文
其他

计算工作日的小能手——workdays

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:戴   雯,中南财经政法大学金融学院

本文编辑:王   彤

技术总编:余术玲

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元


应用背景

如今,“打工人”一词风靡全网,而与”打工人“的切身利益相关的就是工资的计算了。Stata中的 workdays 命令和Excel中的 NETWORKDAYS 函数可以轻松算出两个日期间包含的工作日天数,从而计算出应计的薪酬。


Stata中的workdays命令

01命令安装
workdays 是一个外部命令,需要通过 ssc install 进行安装,安装成功结果如下图所示:

02命令语法
workdays 的基本语法如下:
workdays startvar endvar [if exp] [in range] [using filename], gen(diffvar) [holiday(holidayvar)]
主要构成如下:
构成部分含义
workdays命令主体,不可省略
startvar起始日期
endvar截止日期
gen用于生成一个新的变量,表示工作日的天数,不可省略
holiday(holidayvar)用于剔除因节假日或公司内部原因导致的放假,可省略

注意:运用 holiday(holidayvar) 时,需要有事先准备好的节假日日期文件,这里的 holidayvar 为日期型变量。

03命令应用
运用workdays函数,计算三组起始日期与截止日期之间的工作日天数,程序如下:
clear all
input str10 start_date str10 end_date
"20200401" "20200411"
"20200401" "20200505"
"20200401" "20200630"
end
gen Start_date = date(start_date,"YMD")
gen End_date = date(end_date,"YMD")
format %tdCY-N-D Start_date End_date
workdays Start_date End_date, gen(workday)
结果如下:

那么,上图workday的结果有没有问题呢?我们知道,2020年4月-6月期间有清明节、劳动节和端午节,但在计算工作日时没有考虑到节假日的情况,所以结果是不准确的。接下来,运用 2020holidays 文件,加入 holiday 这一可选项,重新计算三组日期间的工作日天数,程序如下:
workdays Start_date End_date using "2020holidays",holiday(daysoff) gen(workday1)
从结果中可以看出,workday变量只剔除了周末,而在workday1中考虑了周末和节假日两种情况,所以后者才是我们需要的正确结果。
ps: 2020年节假日文件可以通过在公众号后台回复 2020holidays 来获取哦~



Excel中的NETWORKDAYS函数

无独有偶,Excel中也有计算工作日的功能,那就是 NETWORKDAYS 函数。原理与Stata中的workdays命令类似,只是在表达方式上略有不同,这里小编也为大家科普一下~

01函数语法
NETWORKDAYS(start_date, end_date, [holidays])
包含参数如下:
参数含义
start_date必需,代表开始日期
end_date必需,代表终止日期
holidays可选,代表用户自定义需要排除在工作日之外的日期
02函数应用
例如,要统计小王在2020年4月-6月工作日的天数(工作日不包含周末和指定假期),在C2单元格中输入公式:=NETWORKDAYS(A2,B2,B5:B7),回车,函数返回值为62。这说明2020年4月-6月有62个工作日(所有天数去掉法定节假日和双休日的结果)。

总结一下,NETWORKDAYS函数就是计算某一段时期内总天数减去双休日和法定节假日之后的工作天数,有三个参数,第三个参数(holidays)是可以省略的。需要注意的是,如果第三个参数给定的是周六日,那么函数返回结果本身就是把这一天减去的,是不会重复减去的。
以上就是本期推文的全部内容了,其实 workdays 命令和NETWORKDAYS函数不仅可以用于薪酬的计算,还可用于研究公告发布日期与更新日期之间包含的工作日天数等等。美中不足的是,二者均默认工作日是排除周六周日两天的,所以对于单休的公司来说,上述计算工作日的方法并不适用,大家在实际操作时要看清情况再进行计算哦~




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

Seminar | 企业错报与银行贷款合同

Seminar | 共同基金行业的性别歧视
Seminar | 来自女儿的塑造:高管、女性社会化与企业社会责任

小贴士:Markdown的基本语法

听说相貌也能量化 | 调用百度人脸检测API实现颜值打分

列出指定属性的变量|findname命令比ds命令

新一代的标签转码小能手
【爬虫实战】亚马逊网站Top100畅销书爬取

Json文件好帮手——JsonPath

数据转置pro之sxpose2
文件"搬家"小助手:mvfiles

pyecharts绘图——河流图展示

你知道MDPI期刊的热门题目吗?

文件合并你不行,mergemany来帮宁

         分组进行描述性统计的小技巧 --astx命令介绍

新年快乐|爬虫俱乐部2020年度总结

不能忘却的记忆| B站弹幕爬虫

Python中实现Excel的重复值提取
fileexists:告诉你“我”存在吗?

工作中一切困难的解决途径——motivatedolly

【爬虫实战】喜茶的门店都开在了哪里?

import delimited | 再也不用担心读入网页源代码“乱七芭蕉”了
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存