R语言数据转换(split-apply-combin…
(1) apply
apply函數通過對數組,矩陣,或非空維數值的數據框的“邊緣”(margin)即行或列運用函數。返回值為向量,數組或列表。
函數形式
apply(X, MARGIN, FUN, ...)
其中,X:數組(矩陣);
MARGIN:函數要作用的下標向量,對于矩陣,1表示行,2表示列,1:2表示行和列;
FUN:函數名或函數表達式。
##例
> m<-matrix(c(1:4,1,4,1:6),ncol=3)
> apply(m,1,mean)
[1] 1.666667 3.333333 3.000000 4.000000
> apply(m,2,sd)
[1] 1.290994 1.414214 1.290994
> apply(m,1:2,function(x) x*2)
?????[,1] [,2] [,3]
[1,] 2 2 6
[2,] 4 8 8
[3,] 6 2 10
[4,] 8 4 12
> apply(m,2,table) #返回的是列表
?[ [1] ]
1 2 3 4
1 1 1 1
……
> apply(m, 1, stats::quantile) #各行的分位數,返回矩陣
?????[,1] [,2] [,3] [,4]
0% 1 2 1 2
25% 1 3 2 3
50% 1 4 3 4
75% 2 4 4 5
100% 3 4 5 6
(2) by
?
??by函數是tapply的一個面向用戶的友好包裝版,是一個使用因子來對數據框按行進行分組并對每個子集運用函數的方法。它的對象數據被默認強制轉換為數據框。它返回一個 類屬性為by的對象,simplify i= false是,返回值是列表,否則是列表或數組。
by(data, INDICES, FUN, ..., simplify = TRUE)
#例 使用著名的鳶尾花數據iris
> attach(iris)
> head(iris)
???Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
> by(iris[, 1:4], Species, mean)
Species: setosa
Sepal.Length Sepal.Width Petal.Length Petal.Width
???????5.006 3.428 1.462 0.246
---------------------------------------------------------
Species: versicolor
Sepal.Length Sepal.Width Petal.Length Petal.Width
???????5.936 2.770 4.260 1.326
---------------------------------------------------------
Species: virginica
Sepal.Length Sepal.Width Petal.Length Petal.Width
???????6.588 2.974 5.552 2.026
?
原文:http://site.douban.com/182577/widget/notes/10567181/note/245242931/
?
?
總結
以上是生活随笔為你收集整理的R语言数据转换(split-apply-combin…的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理想汽车:目标 2030 年成为全球领先
- 下一篇: 何小鹏:2023 年小鹏将推出 5 款新