2017-06-21 3 views
1

Erstellen habe ich einen Datenrahmen wie folgt aus:ein Liniendiagramm in R über die Zeit

 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 

Ich möchte ein Liniendiagramm in R erstellen, die Anzahl der user_id über Tage zeigt. Ich möchte wissen, wie viele user_id pro Tag vorhanden sind und ein Diagramm davon erstellen. Wie mache ich es?

Antwort

3

Zuerst sollten Sie wissen, wie man Datum und Uhrzeit in R verarbeitet. Ich empfehle das lubridate Paket.

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

Dann müssen Sie lernen, wie man einen Datenrahmen in R. zu manipulieren, in der Regel I dplyr Paket verwenden, weil es ganz einfach ist, zu lernen und der Code ist leicht zu lesen.

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 

Endlich müssen Sie lernen, wie man einen Datenrahmen in R. plotten ich persönlich lieber ggplot2 verwenden, um diese Aufgabe zu tun.

Jetzt sehen Sie ein Bild im rechten unteren Bereich, wenn Sie RStudio verwenden, um den Code auszuführen. Darüber hinaus könnten Sie plotly Paket verwenden, um das statische Bild in ein dynamisches Diagramm zu ändern!

library(plotly) 
ggplotly(p) 
+1

Sie vergessen 'Einheit = "Tag" 'in Ihrer' muate'und 'floor_date' Funktion. Sie brauchen auch ein ')' in dieser Zeile. Abgesehen davon ist es eine gute Antwort. – www

+0

Die x-Achse ist noch Zeit. Ich möchte Anzahl der Benutzer vs Tage plotten, so dass die X-Achse 2014-01-01, 2014-01-02, 2014-01-03 .... @ycw sein sollte, löste Ihr Kommentar das Problem. Danke für die Antwort. –

+0

danke für den Kommentar :-) –

Verwandte Themen