gpt4 book ai didi

r - R 中的润滑错误

转载 作者:行者123 更新时间:2023-12-02 05:35:35 25 4
gpt4 key购买 nike

我使用以下代码给出日期中的星期几(格式为 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 日是星期五,而不是星期六。

有人对如何纠正这个问题有任何建议吗?

编辑:我尝试遵循德克给出的建议......

as.POSIXlt(df[,1])$wday

...但这仍然意味着 18/1 是星期六。

我的时区是 GMT/UTC(+ 1 表示英国夏令时间),但是因为我只想让 R 从日期列中读取(即 d/m/y),所以我想我不需要指定这...

如何将正确的工作日列添加到现有的 R 数据框中? (如我之前的原始脚本中所详述)。我正在努力让建议的编码工作,因为我以错误的格式提供了数据帧 - 抱歉。

最佳答案

您可以使用基本 R 函数来实现此目的。使用您的 df 对象:

 R> as.POSIXlt(df[,1])$wday  
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
R> weekdays(as.Date(df[,1]))
[1] "Friday" "Friday" "Friday" "Friday" "Friday"
[6] "Friday" "Friday" "Friday" "Friday" "Friday"
[11] "Friday" "Friday" "Friday" "Friday" "Saturday"
[16] "Saturday" "Saturday" "Saturday" "Saturday"
R>

由于未指定 TZ,因此最终会溢出到周六。

如果你这样做

 R> df <- data.frame(Date=seq(as.POSIXct("05:00", format="%H:%M", tz="UTC"),
+ as.POSIXct("23:00", format="%H:%M", tz="UTC"), by="hours"))

然后

 R> table(weekdays(as.Date(df[,1], TZ="UTC")))

Friday
19
R>

我认为周五/周六的错误也可能在 lubridate 下消失,但我倾向于使用基本 R 函数来实现此目的。

编辑:已确认。

R> lubridate::wday(as.Date(df[,1]), label=TRUE) 
[1] Fri Fri Fri Fri Fri Fri Fri Fri Fri Fri Fri Fri Fri Fri
[15] Fri Fri Fri Fri Fri
Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat
R>

关于r - R 中的润滑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com