这是我目前的数据,使用R,我将日期分类为年/月/日;但是,现在我希望将它们排序为周。
library(tidyr)
library(astsa)
mydata <- read.csv("/Users/Shannon/Documents/PoliceKillingsUS.csv", header = TRUE, sep = ",", dec = ".")
mydata$ddate <- format(as.Date(mydata$date, format = "%d/%m/%y"), "%Y/%m/%d")
sort(mydata$ddate)
理想情况下,我想要的输出如下。虽然如果我们不能从第 0 周开始,那很好。
ddate week
1 2015-1-2 0
2 2015-1-3 0
3 2015-1-10 1
4 2015-1-18 2
我确实在stackoverflow中阅读了这个按周分组的线程,但不幸的是,我不断收到错误。 在 R 中按周对日期进行分组
我们可以使用format
(和其他函数(的%V
参数:
dat <- read.table(header = TRUE, stringsAsFactors = FALSE, text = "
ddate week
1 2015-1-2 0
2 2015-1-3 0
3 2015-1-10 1
4 2015-1-18 2")
dat$ddate <- as.Date(dat$ddate, format = "%Y-%m-%d")
dat$week2 <- format(dat$ddate, "%V")
dat$week3 <- as.integer(format(dat$ddate, "%V")) - 1L
dat
# ddate week week2 week3
# 1 2015-01-02 0 01 0
# 2 2015-01-03 0 01 0
# 3 2015-01-10 1 02 1
# 4 2015-01-18 2 03 2
这假设ddate
实际上存储为Date
对象,尽管进行瞬态转换并再次返回比任何尝试这样做而不Date
的解决方法要好得多。
正如@Onyambu建议的那样,您可能更喜欢"%W"
(星期一作为一周的开始(而不是"%V"
(星期日作为一周的开始(。
lubridate::isoweek(mydata$ddate)
Ronak Shah的解决方案奏效了。