R 润滑周()给了我';错误';周,可能的问题?
我试图得到每一周的数字,即第一周1,第二周2,等等 我的数据始于2012年1月1日,假设所有日期/时间都与芝加哥/CST6CDT时区相关。一开始,我似乎在获取week函数以满足我的需求方面遇到了问题(无论是理解还是编程) 例如R 润滑周()给了我';错误';周,可能的问题?,r,lubridate,R,Lubridate,我试图得到每一周的数字,即第一周1,第二周2,等等 我的数据始于2012年1月1日,假设所有日期/时间都与芝加哥/CST6CDT时区相关。一开始,我似乎在获取week函数以满足我的需求方面遇到了问题(无论是理解还是编程) 例如 x=seq(as.POSIXlt("2012-1-1"), as.POSIXlt("2012-1-10"), by="day") cbind(as.character(x), week(x)) …给了我 [,1] [,2] [1,] "20
x=seq(as.POSIXlt("2012-1-1"), as.POSIXlt("2012-1-10"), by="day")
cbind(as.character(x), week(x))
…给了我
[,1] [,2]
[1,] "2012-01-01" "1"
[2,] "2012-01-02" "1"
[3,] "2012-01-03" "1"
[4,] "2012-01-04" "1"
[5,] "2012-01-05" "1"
[6,] "2012-01-06" "1"
[7,] "2012-01-07" "2"
[8,] "2012-01-08" "2"
[9,] "2012-01-09" "2"
[10,] "2012-01-10" "2"
2012年1月7日,星期六,应该被视为第一周的一部分,对吗?设置时区似乎没有帮助
x=seq(as.POSIXlt("2012-1-1", tz="CST6CDT"), as.POSIXlt("2012-1-10", tz="CST6CDT"), by="day")
有办法解决这个问题吗?这与函数
week
在包中的编写方式有关:
> week()
function (x)
yday(x)%/%7 + 1
就您而言,2012年1月7日:
x = as.POSIXlt("2012-1-7")
yday(x) = 1
然后:
要使其按您的意愿工作,请尝试以下操作:
x=seq(as.POSIXlt("2012-1-1", tz = "UCT"), as.POSIXlt("2012-1-20", tz = "UTC"), by="day")
cbind(as.character(x), (yday(x)-1)%/%7+1)
您将获得以下输出:
# [,1] [,2]
# [1,] "2012-01-01" "1"
# [2,] "2012-01-02" "1"
# [3,] "2012-01-03" "1"
# [4,] "2012-01-04" "1"
# [5,] "2012-01-05" "1"
# [6,] "2012-01-06" "1"
# [7,] "2012-01-07" "1" <<<
# [8,] "2012-01-08" "2"
# [9,] "2012-01-09" "2"
#[10,] "2012-01-10" "2"
#[11,] "2012-01-11" "2"
#[12,] "2012-01-12" "2"
#[13,] "2012-01-13" "2"
#[14,] "2012-01-14" "2"
#[15,] "2012-01-15" "3"
#[16,] "2012-01-16" "3"
#[17,] "2012-01-17" "3"
#[18,] "2012-01-18" "3"
#[19,] "2012-01-19" "3"
#[20,] "2012-01-20" "3"
#[,1][,2]
# [1,] "2012-01-01" "1"
# [2,] "2012-01-02" "1"
# [3,] "2012-01-03" "1"
# [4,] "2012-01-04" "1"
# [5,] "2012-01-05" "1"
# [6,] "2012-01-06" "1"
#[7,][2012-01-07”“1”这与功能周
在软件包中的写入方式有关:
> week()
function (x)
yday(x)%/%7 + 1
就您而言,2012年1月7日:
x = as.POSIXlt("2012-1-7")
yday(x) = 1
然后:
要使其按您的意愿工作,请尝试以下操作:
x=seq(as.POSIXlt("2012-1-1", tz = "UCT"), as.POSIXlt("2012-1-20", tz = "UTC"), by="day")
cbind(as.character(x), (yday(x)-1)%/%7+1)
您将获得以下输出:
# [,1] [,2]
# [1,] "2012-01-01" "1"
# [2,] "2012-01-02" "1"
# [3,] "2012-01-03" "1"
# [4,] "2012-01-04" "1"
# [5,] "2012-01-05" "1"
# [6,] "2012-01-06" "1"
# [7,] "2012-01-07" "1" <<<
# [8,] "2012-01-08" "2"
# [9,] "2012-01-09" "2"
#[10,] "2012-01-10" "2"
#[11,] "2012-01-11" "2"
#[12,] "2012-01-12" "2"
#[13,] "2012-01-13" "2"
#[14,] "2012-01-14" "2"
#[15,] "2012-01-15" "3"
#[16,] "2012-01-16" "3"
#[17,] "2012-01-17" "3"
#[18,] "2012-01-18" "3"
#[19,] "2012-01-19" "3"
#[20,] "2012-01-20" "3"
#[,1][,2]
# [1,] "2012-01-01" "1"
# [2,] "2012-01-02" "1"
# [3,] "2012-01-03" "1"
# [4,] "2012-01-04" "1"
# [5,] "2012-01-05" "1"
# [6,] "2012-01-06" "1"
#[7,][2012-01-07”“1”您想要的可能是isoweek()
,而不是week()
。我的日历周总是有同样的问题:)你想要的可能是isoweek()
,而不是week()
。我的日历周总是有同样的问题:)是否有可能使用ISO周?这些都有一些违反直觉的规则。它与函数week
本身有关。请参考我的答案。谢谢。有没有可能使用ISO周?这些都有一些违反直觉的规则。它与函数week
本身有关。请参考我的答案。谢谢