R 基于日期提取上一个特定日期

R 基于日期提取上一个特定日期,r,R,是否有特定的方法根据通过的日期提取特定的日期。例子 如果用户通过Sys.Date(),则用户应获得上一个日期,即星期六。如果今天是星期六,用户应该自己获取今天的日期,因为今天是星期六 > Sys.Date() [1] "2021-02-11" 这里我需要的是这个日期(今天)前一个星期六的日期。因此,预期输出低于饱和值 [1] "2021-02-06" 如果出现以下情况,您可以尝试: x <- as.Date("2021-02-1

是否有特定的方法根据通过的日期提取特定的日期。例子 如果用户通过Sys.Date(),则用户应获得上一个日期,即星期六。如果今天是星期六,用户应该自己获取今天的日期,因为今天是星期六

> 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()
from
lubridate
。请注意,您一周中的某一天可能是区域性的,因此每个人都可以选择星期六(但您可以设置
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"