R 基于日期提取上一个特定日期
是否有特定的方法根据通过的日期提取特定的日期。例子 如果用户通过Sys.Date(),则用户应获得上一个日期,即星期六。如果今天是星期六,用户应该自己获取今天的日期,因为今天是星期六R 基于日期提取上一个特定日期,r,R,是否有特定的方法根据通过的日期提取特定的日期。例子 如果用户通过Sys.Date(),则用户应获得上一个日期,即星期六。如果今天是星期六,用户应该自己获取今天的日期,因为今天是星期六 > Sys.Date() [1] "2021-02-11" 这里我需要的是这个日期(今天)前一个星期六的日期。因此,预期输出低于饱和值 [1] "2021-02-06" 如果出现以下情况,您可以尝试: x <- as.Date("2021-02-1
> Sys.Date()
[1] "2021-02-11"
这里我需要的是这个日期(今天)前一个星期六的日期。因此,预期输出低于饱和值
[1] "2021-02-06"
如果出现以下情况,您可以尝试:
x <- as.Date("2021-02-11")
x - 8 + which(format(seq(x - 7, by=1, length.out = 7), "%u") == 6)
#x - 8 + which(format(seq(x - 7, by=1, length.out = 7), "%a") == "Sat") #Alternative depending on locale
#[1] "2021-02-06"
x您可以尝试:
x <- as.Date("2021-02-11")
x - 8 + which(format(seq(x - 7, by=1, length.out = 7), "%u") == 6)
#x - 8 + which(format(seq(x - 7, by=1, length.out = 7), "%a") == "Sat") #Alternative depending on locale
#[1] "2021-02-06"
x您可以从lubridate
使用floor\u date()。请注意,您一周中的某一天可能是区域性的,因此每个人都可以选择星期六(但您可以设置week\u start
可选参数)
库(lubridate)
x您可以使用loor\u date()
fromlubridate
。请注意,您一周中的某一天可能是区域性的,因此每个人都可以选择星期六(但您可以设置week\u start
可选参数)
库(lubridate)
x以下内容基于一个zoo软件包案例中给出的公式,但不依赖于该软件包或任何其他软件包
假设x是Date
类的向量,d是一周中的一天,其中周日=0,周一=1,依此类推。然后
X0 <- as.Date(d - 4, origin = "1970-01-01")
以星期六,即第6周的某一天为例
x <- as.Date("2000-01-08") + 0:8
x
## [1] "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11" "2000-01-12"
## [6] "2000-01-13" "2000-01-14" "2000-01-15" "2000-01-16"
weekdays(x)
## [1] "Saturday" "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday"
## [7] "Friday" "Saturday" "Sunday"
p <- prev(x, 6) # 6 means Saturday
p
## [1] "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08"
## [6] "2000-01-08" "2000-01-08" "2000-01-15" "2000-01-15"
weekdays(p)
## [1] "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday"
## [8] "Saturday" "Saturday"
x以下内容基于其中一个zoo软件包案例中给出的公式,但不依赖于该软件包或任何其他软件包
假设x是Date
类的向量,d是一周中的一天,其中周日=0,周一=1,依此类推。然后
X0 <- as.Date(d - 4, origin = "1970-01-01")
以星期六,即第6周的某一天为例
x <- as.Date("2000-01-08") + 0:8
x
## [1] "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11" "2000-01-12"
## [6] "2000-01-13" "2000-01-14" "2000-01-15" "2000-01-16"
weekdays(x)
## [1] "Saturday" "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday"
## [7] "Friday" "Saturday" "Sunday"
p <- prev(x, 6) # 6 means Saturday
p
## [1] "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08"
## [6] "2000-01-08" "2000-01-08" "2000-01-15" "2000-01-15"
weekdays(p)
## [1] "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday"
## [8] "Saturday" "Saturday"
x太好了。但是,如果日期是“2021-02-06”
,则显示为“2021-01-30”
。但它仍应显示为“2021-02-06”
“2021-02-06”
不在“2021-02-06”
之前。但是如果你想“2021-02-06”
将8
更改为7
,将9
更改为8
。谢谢我尝试了x-8+格式(seq(x-7,by=1,length.out=6),%u”)==6)
。但是仍然得到“2021-01-30”
哦,是的,仍然是一对多。请看更新。太好了。但是,如果日期是“2021-02-06”
,则显示为“2021-01-30”
。但它仍应显示为“2021-02-06”
“2021-02-06”
不在“2021-02-06”
之前。但是如果你想“2021-02-06”
将8
更改为7
,将9
更改为8
。谢谢我尝试了x-8+格式(seq(x-7,by=1,length.out=6),%u”)==6)
。但是仍然得到“2021-01-30”哦,是的,仍然是一对多。请参阅更新。
x <- as.Date("2000-01-08") + 0:8
x
## [1] "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11" "2000-01-12"
## [6] "2000-01-13" "2000-01-14" "2000-01-15" "2000-01-16"
weekdays(x)
## [1] "Saturday" "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday"
## [7] "Friday" "Saturday" "Sunday"
p <- prev(x, 6) # 6 means Saturday
p
## [1] "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08" "2000-01-08"
## [6] "2000-01-08" "2000-01-08" "2000-01-15" "2000-01-15"
weekdays(p)
## [1] "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday" "Saturday"
## [8] "Saturday" "Saturday"