gpt4 book ai didi

r - 如何从日期获取 ISO 周数

转载 作者:行者123 更新时间:2023-12-05 09:17:38 30 4
gpt4 key购买 nike

我想以字符串格式从给定日期获取 ISO 周数,其中星期一是一周的第一天,包含一年中第一个星期四的那一周被认为是第一周。

从其他答案来看,我认为 strftime("2017-11-18", format = "%V") 最适合我的目的。但是它不适用于 Windows。

对仅使用 R 中的基础包的替代品有什么建议吗?

最佳答案

使用包 lubridate

它有一个函数 isoweek() 可以给你一个给定日期的 ISOWeek

lubridate::isoweek("2017-11-18")
[1] 46

现在您只想使用基础包。这是 ISO 周 lubridate 的代码

function (x) 
{
xday <- make_datetime(year(x), month(x), day(x))
dn <- 1 + (wday(x) + 5)%%7
nth <- xday + ddays(4 - dn)
jan1 <- make_datetime(year(nth), 1, 1)
1L + as.integer(difftime(nth, jan1, units = "days"))%/%7L
}

我们可以把它变成只使用基础包的东西。

myIsoweek <- function (x) 
{
dateList <- as.list(strsplit(as.character(as.Date(x)),split = "-")[[1]])
names(dateList) <- c("year","month","day")

weekday <- as.POSIXlt(x)[["wday"]] + 1

xday <- ISOdate(dateList$year, dateList$month, dateList$day)
dn <- 1 + (weekday + 5)%%7
nth <- xday + 86400*(4 - dn)
jan1 <- ISOdate(format(nth,format = "%Y"), 1, 1)
1L + as.integer(difftime(nth, jan1, units = "days"))%/%7L
}

关于r - 如何从日期获取 ISO 周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509567/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com