年周在r中添加一周
我有一个dataframe,其中一列包含日期和时间,我用这个公式创建了一个新列,其中包含年份周年周在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
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())