python - 从 Python 到 R 的工作日算法转换?
问题描述
我用 Python 编写了以下函数。对于任何日期,它都会计算出正确的周末或开始日期。我不知道如何用 R 写这个。有人有什么想法吗?
def Week_dates(dt, day, we=False):
"""
dt is a date
day is string like 'sat' or 'mon'
"""
day = day.lower()
days = ['mon','tue','wed','thu','fri','sat','sun']
if we:
day_num = (days.index(day) + 1) % 7
else:
day_num = days.index(day)
day_offset = (dt.weekday() + 7-day_num) % 7
return dt - timedelta(days=day_offset) + timedelta(days=(6 * we))
解决方案
请参阅以下使用lubridate
包:
Week_dates <- function(dt, day, we = FALSE) {
require(lubridate)
day <- tolower(day)
days <- c("mon","tue","wed","thu","fri","sat","sun")
if (we) {
day_num <- (match(day, days) + 1) %% 7
} else {
day_num <- match(day, days) + 1
}
day_off_set <- (wday(dt) + 7 - day_num) %% 7
dt - as.period(day_off_set, unit = "days") + as.period(6 * we, unit = "days")
}
Week_dates(ymd("2012/10/12"), "mon")
# [1] "2012-10-08"
推荐阅读
- python - Python:如何从 pandas 数据框创建字典?
- c# - 计算心率变异性窗口 10 的 C# 或 C++ 源代码示例
- mysql - Web server & api server - 配置和代码上传
- node.js - 验证 POSTMAN 断言中返回的 json 响应不超过一个
- javascript - 脚本加载后如何运行函数
- angular - 提交时角度视图未以正确的方式刷新
- java - 使用 mutator 方法
- php - 基于数组实例值的 PHP7+ 排序和数组
- google-apps-script - 如何确定所有加载数据操作何时完成?
- office365 - 在内联响应下更新时,Outlook.MailItem.HTMLBody 不刷新