當獲取到原始數據時,我們通常的做法是對該數據進行分割成小片段,然后對各小片段進行計算統計,最后整合成最終的數據。這是統計學里數據處理的一般規律。
R語言為我們提供了相應的函數來分別處理這三個階段任務。
分割:split()和subset()函數。
計算:apply(),lapply(),tapply(),sapply()
整合:aggregate()
注意幾點:
1.向量,矩陣,數組的長度就是它元素的個數,用length獲取;而數據集,列表的長度則是它變量的個數,注意二者的不同。
實際上,向量和矩陣是特殊的數組,而數據集是特殊的列表。才表現出上述形式來。
2.批處理函數apply簇:
| 作用目標 | 在每個元素上應用 | 在子集合上應用 |
|---|---|---|
| array | apply |
tapply |
| list | lapply(...) |
by |
apply和lapply作用在元素上,而tapply和by作用在子集合上。
二,實際用法:
tapply
tapply(array, indices, margin, FUN=NULL, ...)
按indices中的值分組,把相同值對應下標的array中的元素形成一個集合,應用到FUN。
by
by(dataframe, INDICES, FUN, ..., simplify=TRUE)
by是針對數據集進行的,功能同taaply函數,INDICES的長度等於每列變量的長度,因此它是將數據集按照行進行分割。
lapply
lapply(list, FUN, ...)
在list上按照變量分組分別調用FUN,相當於apply。可以用於dataframe上,因為dataframe是一種特殊形式的list。
具體使用方法參考:R語言apply函數簇使用方法
