Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 计算渔业数据中使用的从1月1日开始的统计周_R_Date - Fatal编程技术网

R 计算渔业数据中使用的从1月1日开始的统计周

R 计算渔业数据中使用的从1月1日开始的统计周,r,date,R,Date,渔业数据通常按每年1月1日开始的统计周收集。第二周从每年的下一个星期日开始 因此,2013年1月1日至1月5日是第一周,1月6日至1月12日是第二周。我试图计算给定日期的静态周数。我的数据只是d-m-y格式的日期(即16-6-1990),我想要一个R代码的统计周输出 例如: > d <- as.Date(c("01-01-2013","06-01-2013","01-01-2006","08-01-2006"),"%d-%m-%Y") > statweek(d) [1] 1

渔业数据通常按每年1月1日开始的统计周收集。第二周从每年的下一个星期日开始

因此,2013年1月1日至1月5日是第一周,1月6日至1月12日是第二周。我试图计算给定日期的静态周数。我的数据只是d-m-y格式的日期(即16-6-1990),我想要一个R代码的统计周输出

例如:

> d <- as.Date(c("01-01-2013","06-01-2013","01-01-2006","08-01-2006"),"%d-%m-%Y")
> statweek(d)
[1] 1 2 1 2
试试这个:

> d <- as.Date("01-01-2013", "%d-%m-%Y") + 0:7  # first 8 days of 2013
> d
[1] "2013-01-01" "2013-01-02" "2013-01-03" "2013-01-04" "2013-01-05"
[6] "2013-01-06" "2013-01-07" "2013-01-08"
> 
> ufmt <- function(x) as.numeric(format(as.Date(x), "%U"))
> ufmt(d) - ufmt(cut(d, "year")) + 1
[1] 1 1 1 1 1 2 2 2
>d
[1] "2013-01-01" "2013-01-02" "2013-01-03" "2013-01-04" "2013-01-05"
[6] "2013-01-06" "2013-01-07" "2013-01-08"
> 
>ufmt ufmt(d)-ufmt(切割(d,“年”)+1
[1] 1 1 1 1 1 2 2 2
注:一年中的第一个星期日由
%U
定义为第1周的开始,这意味着如果一年不是在星期日开始,那么我们必须将1添加到该周,以便第一周是第1周,而不是第0周
ufmt(cut(d,“year”)
等于1,如果
d
的年份从周日开始,否则为零,那么上述公式将减少为
ufmt(d)
如果d的年份从周日开始,如果不是
ufmt(d)+1


更新:更正,因此一月从第一周开始,即使一年从星期日开始,例如2006年

这里是
statweek
函数。主参数可以是日期的字符向量(例如,读取data.frame后的默认值)。您可以指定日期的格式(默认值为:
format=“%d-%m-%Y”

[1] 1 2 1 2

statweek(d1, format="%d-%m-%Y")
statweek(d2, format="%d/%m/%Y")
[1] 1 2 1 2

statweek(d1, format="%d-%m-%Y")
statweek(d2, format="%d/%m/%Y")

[1] 1 2 1 2

欢迎来到SO。你应该给“请使用”一个标题,这个标题可能也会对未来的搜索者有所帮助。您的代码/答案如何对未来的搜索者有用?如果做不到这一点,那么这个问题很可能会缩小范围,并且可能会被关闭。。。。我在
strtime
中读得不够深入,没有找到
%U
——回答得很好。最简单的解决方案总是最好的。@最近的邮件您的答案可能不是最好的,但如果它有效且合理,为什么不将它留给其他搜索者来收集他们所能收集的呢。“最好的答案无论如何都会升到顶端,这没什么坏处。”泰勒林克-我取消了删除,然后意识到它无论如何都有问题,于是重新删除了。它确实让我思考了一些事情,所以并不是所有的东西都丢了;-)
statweek(d1, format="%d-%m-%Y")
statweek(d2, format="%d/%m/%Y")