替换 R 中的一系列列值

Replacing a Range of Column Values in R

我在数据集中有一列填满了日期,我想用周值替换它们。有没有一种方法可以设置特定的日期范围(例如,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

最好使用 lubridate 的 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")
)

如果这回答了您的问题,请将其标记为解决方案和/或对其投赞成票。

根据评论中的说明,这段代码应该会产生预期的输出:

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))