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中添加一周_R_Date_Week Number - Fatal编程技术网

年周在r中添加一周

年周在r中添加一周,r,date,week-number,R,Date,Week Number,我有一个dataframe,其中一列包含日期和时间,我用这个公式创建了一个新列,其中包含年份周 Path LogTime HJH 2015-06-19 01:57:11 GTF 2015-07-31 08:23:34 R 2015-07-21 11:52:31 Path2$Week<-strftime(Path2$LogTime,format="%Y-%W",tz="CET") Path LogTime We

我有一个dataframe,其中一列包含日期和时间,我用这个公式创建了一个新列,其中包含年份周

Path     LogTime
HJH      2015-06-19 01:57:11
GTF      2015-07-31 08:23:34
R        2015-07-21 11:52:31

Path2$Week<-strftime(Path2$LogTime,format="%Y-%W",tz="CET")
Path     LogTime                Week
HJH      2015-06-19 01:57:11    2015-24
GTF      2015-07-31 08:23:34    2015-30
R        2015-07-21 11:52:31    2015-29

我在R怎么做?我很难在R中错综复杂的日期中找到自己的方向,就像R中经常出现的情况一样,“有一个包可以满足这个需求”。我建议
lubridate
。这涵盖了所有的日常任务。这会将任务转换为一行,而不会丢失信息:

Path$New.Week <- strftime(as.Date(Path$LogTime)+7, "%Y-%W", tz="CET")
   Path            LogTime    Week New.Week
1  HJH 2015-06-19 01:57:11 2015-24  2015-25
2  GTF 2015-07-31 08:23:34 2015-30  2015-31
3    R 2015-07-21 11:52:31 2015-29  2015-30
library(lubridate)   
data$New.Week <- data$LogTime + weeks(1)

@戴维登堡是的,你是对的。因此,也许转换为“Date”类并进行转换更好。@akrun我认为OP首先需要提供真实数据集的和平。@Davidernburg我用一些数据更新了问题。希望这个帮助我可以使用
Path2$NewWeek这是一个很好的语法,但是对于一个相对较大的数据集来说,转换成
as.Date
可能会很昂贵。首先,我会添加
Path2$NewWeek,我没有假设日期格式,但是如果OP启动了Week列,它们必须已经转换。我的意思是你的
as.date(Path$LogTime)
行可以通过
Path2$LogTime+60*60*24*7
来避免,这在我看来更有效。我唯一关心的是时区,不知道。为了清楚起见,“日期”是指它被识别为一个日期,而不是一个特定的
“日期”
类。任何都可以,包括
POSIXct
。我得到“as.POSIXlt.numeric(x,tz=tz)中的错误:”必须提供“origin”
Path$NewWeek <- strftime(Path$LogTime + 60*60*24*7, format = "%Y-%W", tz = "CET")
library(lubridate)   
data$New.Week <- data$LogTime + weeks(1)
library(tidyverse)
data %>%
  group_by(year(LogTime),week(LogTime)) %>%
  summarise(count_by_week = n())