2017-06-21 131 views
1

創建中的R的線的圖表I有如下所示的數據幀:跨越時間

 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並創建一個圖。我該怎麼做?

回答

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運行代碼,現在您將在右下方的面板中看到一張圖片。此外,您可以使用圖形包將靜態圖像更改爲動態圖表!

library(plotly) 
ggplotly(p) 
+1

你在'mutate'和'floor_date'函數中忘記了'unit =「day」'。你也需要一個'''在那一行。除此之外,這是一個很好的答案。 – www

+0

x軸仍然是時間。我想繪製用戶數量與天數,所以X軸應該是2014-01-01,2014-01-02,2014-01-03 .... @ycw,您的評論解決了這個問題。 謝謝你的回答。 –

+0

感謝您的評論:-) –