介紹如何使用 R 語言統計文字資料的出現次數,並以 ggplot2
繪製長條圖。
這裡我們的原始資料是一個包含日期與使用者 ID 的逗點分隔檔(CSV),資料格式類似這樣:
date,id 11-Oct-2018,u3928822 29-Oct-2018,u3928822 08-Nov-2018,u3928822 08-Nov-2018,u3928822 08-Nov-2018,u3928822 08-Nov-2018,nud06323052 08-Nov-2018,k9525068 08-Nov-2018,nud06323052 09-Nov-2018,robert6323
這些資料代表使用者登入系統的時間點,我們希望統計出每個月的使用者登入次數,以及每個使用者的總登入次數。
首先以 read.csv
從 CSV 檔案中讀取使用者登入的時間資料:
# 讀取記錄檔 logfile <- read.csv("logfile.csv", header = TRUE)
從日期資料中取出年分與月份,並將月份名稱轉為數值,方便後續處理:
# 從日期中取出年分與月份,並將月份名稱轉為數值 month.num <- match(substr(logfile$date, 4, 6), substr(month.name, 0, 3)) logfile$month <- paste0( substr(logfile$date, 8, 12), "/", sprintf("%02d", month.num))
以 table
計算每個月份與各使用者的出現次數:
# 統計月份出現次數 month.df <- data.frame(table(logfile$month)) names(month.df)<-c("Month", "Freq") # 統計使用者出現次數 id.df <- data.frame(sort(table(logfile$id))) names(id.df)<-c("ID", "Freq")
這裡的 month.df
與 id.df
就包含了每個月份與各使用者出現次數的原始資料。
使用 ggplot2
的 geom_bar
將出現次數的資料繪製為長條圖(barplot),由於這種圖通常包含非常大量的資料,所以我們使用 PDF 檔案格式來輸出圖檔。
library(ggplot2) # 繪製每月統計長條圖 pdf("month.pdf", width = 7, height = 7) ggplot(month.df, aes(Month, Freq)) + geom_bar(stat = "identity") + coord_flip() dev.off()
# 繪製使用者統計長條圖 pdf("id.pdf", width = 7, height = 70) ggplot(id.df, aes(ID, Freq)) + geom_bar(stat = "identity") + coord_flip() dev.off()