我正在使用yelp数据集。变量名称的格式为“ day.hour”。因此,Fri.4
表示星期五凌晨4点,Fri.22
表示星期五晚上10点,变量值为当时的签入次数。
我想创建一个有7条线的图。每行代表一周中的一天,而每行则显示一天中每小时的平均签到趋势。因此,每条线连接24个点,而我有7条线。
有帮助吗?
我会使用dplyr
,但无法弄清楚如何将所有星期一变量和星期二变量放在一起,等等,因为名称类似于Tue.01
,Tues.02
等。 ...如何对字符串进行操作?
我当前的数据集如何格式化: 我的数据集是1x168(每个变量是date.time)
Fri.0 114.35897
Sat.0 154.92308
Sun.0 153.96154
Wed.0 93.92308
Fri.1 124.29487
Sat.1 168.07692
Thu.1 105.96154
Wed.1 101.85897
Sat.2 175.00000
Sun.2 157.48718
Thu.2 105.97436
Wed.2 97.08974
Fri.3 108.46154
Sun.3 145.24359
答案 0 :(得分:1)
这可以通过直接插入ggplot
的简单管道来完成,无需在工作日group_by
,ggplot2
美观aes(colour = .)
进行分组。 / p>
library(dplyr)
library(stringr)
library(ggplot2)
dh %>%
mutate(Weekday = str_extract(day.hour, "^[[:alpha:]]{3}"),
Day = as.integer(str_extract(day.hour, "[[:digit:]]*$"))) %>%
ggplot(aes(x = Day, y = value, colour = Weekday)) +
geom_line()
数据。
dh <- read.table(text = "
Fri.0 114.35897
Sat.0 154.92308
Sun.0 153.96154
Wed.0 93.92308
Fri.1 124.29487
Sat.1 168.07692
Thu.1 105.96154
Wed.1 101.85897
Sat.2 175.00000
Sun.2 157.48718
Thu.2 105.97436
Wed.2 97.08974
Fri.3 108.46154
Sun.3 145.24359
")
names(dh) <- c("day.hour", "value")