群組操作

apply

apply(thematrix, 1, sum) # 對每一列套用函數

apply(thematrix, 2, sum) # 對每一行套用函數

apply(thematrix, 1, sum , na.rm=TRUE) # 忽略缺失值

lapply和sapply

lapply對list中每個元素套用函數,回傳結果同樣以list呈現;sapply則是以vector形式回傳結果。 由於vector也是list的一種,因此lapply和sapply同樣也可使用vector作為引數。

mapply可對好幾個list中的每個元素套用所指定的函數。 mapply(identical, firstlist, secondlist)

aggregate聚合資料

aggregate(price ~ cut, diamonds, mean) # 公式由波浪號區分左右邊,左邊變數用來計算,右邊變數則是對左邊變數作為分群依據。使用diamonds資料集,將price依據cut分組,套用mean函數

aggregate(price ~ cut + color, diamonds, mean, na.rm=TRUE)

aggregate(cbind(price, carat) ~ cut, diamonds, mean) # 同時對price和carat兩個變數進行分組計算

aggregate(cbind(price, carat) ~ cut + color, diamonds, mean)

aggregate(price ~ cut, diamonds, each(mean, median)) # 利用plyr套建中的each函數,將多個函數的功能套用到某個函數中

plyr套件

篩選

wineTrain <- wine[, which(names(wine != "Cultivar")]

##\ 刪除特定欄位(可能不確定是第幾欄)

wbInfo <- wbInfo[wbInfo$region != "Aggregate", ] ##\ 刪除特定列

wbDaisy <- wbInfo[, which(!names(wbInfo) %in% c("iso2c", "country", "capital"))]

##\ 刪除列出來特定幾個名稱的欄位(利用which與!name留下來非設定欄位)

wbInfo <- wbInfo[which(rowsums(!is.na(wbInfo[,indicators]))>0),]

##\ 若有資料,!is.na()為真,True=1;用which找出rowsums()>0,代表遺除掉所有變數為NA的列

建立資料(案例)

例:generate sales date for RFM analysis

sales <- data.frame( sample(1000:1999,replace=T,size=10000), ##\ 自1000-1999中隨機取10000次,可重複 abs(round(rnorm(10000, 28, 13))), ##\ 常態分配設定平均值28且標準差13,取10000次;再四捨五入;再取絕對值 as.Date("2014/1/1") + 700*sort(stats::runif(10000)), ##\ runif 隨機齊一分配取10000次,再標準化stats;再排序後乘上700,換算日期 data.frame(sample(1:4,replace=T,size=10000)) ##\ 1-4重複隨機取10000次 ) names(sales) <- c("CustomerID", "Sales Value", "Date", "Category")

results matching ""

    No results matching ""