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)
我是 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)