R:工作日被识别为字符:如何将其转换为数值

R: Weekday recognized as character : how to convert it to a numerical value

我是 R 的新手,我正在尝试构建一个直方图来显示一周中每一天的数据点频率(周一、周二等的数据频率)。由于原始数据集包含 YYYY-MM-DD 形式的日期和时间信息 HH:MM:SS 我最初使用脚本将日期转换为星期几的数值:

Weekday <- format(as.POSIXct(strptime(df$DateAndTime, "%Y-%m-%d %H:%M:%S", 
tz="")),format = "%w"))
Data$Weekday <- Weekday

我在尝试创建直方图时收到以下消息:

hist(Data$Weekday)
Error in hist.default(Data$Weekday) : 'x' must be numeric

在数据文件中,Weekday 的数据是数字(0-6,其中 0 是星期日),从摘要中 class 和 mode 都是字符。如何将 R 识别为字符的数字数据点(代表工作日)更改为数字?

谢谢!

我非常喜欢在处理工作日时使用 lubridate 包。你可以直接从 YYYY-MM-DD HH:MM:SS 格式开始,你说你必须使用 wday() 函数,它与 ggplot2 一起玩得很好。

library(readr)
library(lubridate)
library(ggplot2)

example_data <- read_csv("datetime\n
                         2016-12-03 00:01:00\n
                         2016-12-03 00:02:00\n
                         2016-12-04 00:03:00\n
                         2016-12-04 00:04:00\n
                         2016-12-05 00:05:00\n
                         2016-12-06 00:04:00\n
                         2016-12-07 00:05:00\n
                         2016-12-08 00:04:00\n
                         2016-12-09 00:04:00\n
                         2016-12-11 00:05:00\n
                         2016-12-12 00:06:00\n
                         2016-12-13 00:07:00\n
                         2016-12-13 00:08:00\n
                         2016-12-14 00:09:00\n
                         2016-12-14 00:10:00")

ggplot(example_data, aes(wday(datetime, label = TRUE))) +
    geom_histogram(stat = "count") +
    labs(x = NULL)