随时间在R中创建折线图

时间:2017-06-21 03:16:22

标签: r linechart

我有一个如下数据框:

     user_id                         track_id          created_at
1   81496937 cd52b3e5b51da29e5893dba82a418a4b 2014-01-01 05:54:21    
2 2205686924 da3110a77b724072b08f231c9d6f7534 2014-01-01 05:54:22
3  132588395 ba84d88c10fb0e42d4754a27ead10546 2014-01-01 05:54:22
4   97675221 33f95122281f76e7134f9cbea3be980f 2014-01-02 05:54:24
5   17945688 b5c42e81e15cd54b9b0ee34711dedf05 2014-01-02 05:54:24
6  452285741 8bd5206b84c968eda0af8bc86d6ab1d1 2014-01-02 05:54:25

我想在R中创建一个折线图,显示跨天的user_id数。我想知道每天有多少user_id并创建一个情节。我该怎么做?

1 个答案:

答案 0 :(得分:3)

首先,您应该知道如何在R中处理日期和时间。我强烈推荐 lubridate 包。

library(lubridate)
t <- ymd_hms("20170621111800")
dt <- floor_date(t, unit='day')
dt

然后你需要学习如何操作R中的数据框。我通常使用 dplyr 包,因为它非常简单易学,而且代码很容易阅读。

library(dplyr)
new_df <- df %>% 
  mutate(dt=floor_date(ymd_hms(created_at, unit='day'))) %>%
  group_by(dt) %>%
  summarise(user_cnt=n_distinct(user_id))
new_df

最后,您需要了解如何在R中绘制数据框。我个人更喜欢使用 ggplot2 来完成此任务。

library(ggplot2)
p <- ggplot(new_df) + geom_line(aes(x=dt, y=user_cnt))
p

现在,如果使用RStudio运行代码,您将在右下方的面板中看到一张图片。此外,您可以使用 plotly 包将静态图像更改为动态图表!

library(plotly)
ggplotly(p)