如何在 R 中将数据分类为周?



这是我目前的数据,使用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的解决方案奏效了。

最新更新