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