我希望咖啡的记录从记录的开始到末尾分配一个折线图。我想确定每天购买的饮料。每天相应的数字应显示在整个时间范围内。 读完数据集后,我首先遇到了日期/时间格式的问题。 我怀疑我没有将它们转换为正确的格式。
然后我尝试计算每天的咖啡消耗量。然后我发现我的公式始终使用2020年,尽管可以追溯到2019年。
所以我的情节看起来很有趣,没有年份可以找到。
有人可以帮我吗?
非常感谢!
链接到数据集:https://github.com/Skruff80/Getting-started/blob/master/ProductList.csv
coffeedata <- fread("C:/temp/ProductList.csv")
str(coffeedata)
head(coffeedata)
coffeedata$Date = as.Date(coffeedata$Date, "%d.%m.%y")
head(coffeedata)
countcoffee <- function(timeStamps) {
Dates <- as.Date(strftime(coffeedata$Date, "%Y-%m-%d"))
allDates <- seq(from = min(Dates), to = max(Dates), by = "day")
coffee.count <- sapply(allDates, FUN = function(X) sum(Dates == X))
data.frame(day = allDates, coffee.count = coffee.count)}
daylicounter = countcoffee(df$message.date)
lines(daylicounter)
该图应类似于链接中的图片。 https://github.com/Skruff80/Getting-started/blob/master/example.png
感谢您的帮助。
答案 0 :(得分:0)
您可以使用ggplot2
库来做到这一点,如以下代码所示:
library(ggplot2)
ggplot(daylicounter, aes(day, coffee.count)) +
geom_line(color = "orange", size = 1) +
scale_x_date(breaks = "1 month", date_labels = "%Y-%m-%d")
这是输出图:
如果需要自定义中断向量,则可以使用如下代码:
library(ggplot2)
break.vec <- seq(from = min(daylicounter$day), to = max(daylicounter$day),
by = "month")
ggplot(daylicounter, aes(day, coffee.count)) +
geom_line(color = "orange", size = 1) +
scale_x_date(breaks = break.vec, date_labels = "%d-%m-%Y")
希望获得帮助。
答案 1 :(得分:0)
可以解决X轴的错误。正如我已经怀疑的那样,重新格式化日期就是错误。 我用过
%y
代替
%Y
coffeedata$Date = as.Date(coffeedata$Date, "%d.%m.%Y")