我在数据集中有一个用日期填充的列,我想用周值替换它们。有没有办法设置特定的日期范围(例如2016年1月1日到2016年1月7日),并且每次该范围内的任何日期出现时都会将其替换为其他值(例如,第1周)。感谢您的任何帮助!
以下是我正在处理的数据集:
Text Date
Text 1 2016-02-05 10:55:00
Text 2 2016-02-09 10:56:28
Text 3 2016-02-18 20:40:33
Desired output:
Text Date
Text 1 Week 1
Text 2 Week 2
Text 3 Week 3
答案 0 :(得分:0)
最好使用rubridate的wday。首先安装它,如果你没有它:
install.packages("lubridate")
举个简单的例子:
library(lubridate)
mydate <- as.Date("2016-02-05 10:55:00", format = "%Y-%m-%d")
wday(mydate)
PS:1是星期天。
为整个专栏做这件事:
dat$Week <- wday(
as.Date(dat$Date, format = "%Y-%m-%d")
)
如果这回答了你的问题,请将其标记为解决方案&amp; /或向上投票。
答案 1 :(得分:0)
根据评论中的说明,此代码应产生预期的输出:
SemStartWeek <- 5 #variable introduced to avoid obscure "magic numbers" in code
df1$Date <- paste("Week",as.numeric(strftime(df1$Date),"%W")) - SemStartWeek + 1)
# Text Date
#1 Text 1 Week 1
#2 Text 2 Week 2
#3 Text 3 Week 3
数据强>
df1 <- structure(list(Text = structure(1:3, .Label = c("Text 1", "Text 2",
"Text 3"), class = "factor"), Date = structure(1:3,
.Label = c("2016-02-05 10:55:00", "2016-02-09 10:56:28",
"2016-02-18 20:40:33"), class = "factor")), .Names = c("Text",
"Date"), class = "data.frame", row.names = c(NA, -3L))