替换R中的一系列列值

时间:2016-05-15 01:14:43

标签: r dataset date-range

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

2 个答案:

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