【发布时间】:2013-05-31 13:42:03
【问题描述】:
我正在使用以下代码从某个日期(以 dd/mm/yyyy 格式)为我提供星期几。
编辑:我上传了一个更相关的数据集。
df <- structure(list(Date = c("18/01/2013", "18/01/2013", "18/01/2013",
"18/01/2013", "18/01/2013"), Time = c("07:25:30", "07:25:40",
"07:25:50", "07:26:00", "07:26:10"), Axis1 = c(217L, 320L, 821L,
18L, 40L), Steps = c(6L, 7L, 5L, 1L, 1L), wday = c(7, 7, 7, 7, 7)), .Names = c("Date", "Time", "Axis1", "Steps", "wday"), row.names = 18154:18158, class = "data.frame")
library(lubridate)
df$wday = wday(df$Date)
df$wday.name = wday(df$Date, label = TRUE, abbr = TRUE)
然而,正如 R 报道的那样,18/1 是星期五,而不是星期六。
有人对如何纠正这个问题有任何建议吗?
编辑: 我尝试按照 Dirk 给出的建议...
as.POSIXlt(df[,1])$wday
...但这仍然意味着 18/1 是星期六。
我的时区是 GMT/UTC(英国夏令时 + 1),但是因为我只想 R 从日期列中读取(这只是 d/m/y),我想我不需要指定这……
如何将正确的 wday 列添加到我现有的 R 数据框中? (如之前在我的原始脚本中详述的那样)。我正在努力让建议的编码工作,因为我以错误的格式提供了数据框 - 道歉。
【问题讨论】:
-
您的时区是 BST (+0100),而不是 GMT/UTC (+0000)。时区使用不一致有时会导致日期或工作日出现错误
标签: r timezone posixct lubridate