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

我想以字符串格式从给定日期获取 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
}

https://stackoverflow.com/questions/47509567/

相关文章:

reactjs - 文件上传不适用于按钮单击 Material -UI V1 ReactJs

batch-file - 在没有出现超时消息的情况下在批处理文件中运行超时命令

html - 在 HTML 页面上组合 SVG 标签

bash - 在 bash 中有条件地将命令的输出定向到/dev/null

listview - Xamarin.Forms:软键盘与页面底部的最后一个条目(滚动时)重叠

python - 如何计算图像中的亮像素?

php - Laravel paginate 无法在 querybuilder 上选择某些列

java - 没有数据时应该返回哪个http代码

php - php swagger注释jsonproperty中方括号的转义字符

amazon-web-services - AWS GLUE 数据导入问题