Why R
? ?R是統(tǒng)計(jì)軟件的一種,內(nèi)部包含許多統(tǒng)計(jì)技術(shù)的環(huán)境取具。要對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析數(shù)據(jù)挖掘,一個(gè)好的工具必不可少扁耐,相對(duì)于其他的統(tǒng)計(jì)軟件R具有很多優(yōu)勢(shì)暇检,而我之所以要學(xué)習(xí)R語(yǔ)言,基于以下幾個(gè)原因:
1)R開(kāi)源做葵,免費(fèi)占哟。
?這意味著學(xué)習(xí)成本較低,學(xué)的人就多酿矢,遇到問(wèn)題有很多人幫助(:(oracle biee的痛苦經(jīng)歷告訴我榨乎,開(kāi)源的就是好啊)
2)R可以與hadoop結(jié)合
大數(shù)據(jù)時(shí)代瘫筐,軟件能處理多少數(shù)據(jù)量蜜暑,能支撐哪些平臺(tái)是很關(guān)鍵的。
3)R有UNIX,LINUX,MACOS,WINDOWS各個(gè)版本
很多服務(wù)器都是LINUX的策肝,因此有LINUX版本才能在生產(chǎn)環(huán)境中用上肛捍。
其余諸如統(tǒng)計(jì)方法多,軟件包多之众,圖形豐富拙毫,矩陣向量運(yùn)算強(qiáng)等優(yōu)點(diǎn)就不多說(shuō),很多統(tǒng)計(jì)軟件都具備這些棺禾。
OK缀蹄,不多說(shuō),直接來(lái)看看
數(shù)據(jù)矩陣表示
1.創(chuàng)建向量(即一維數(shù)組,隨機(jī)變量)
?R用c()函數(shù)來(lái)創(chuàng)建一個(gè)向量
>x1=c(71,75,59)
這里x1為一個(gè)向量缺前,也可以認(rèn)為是1行3列的矩陣蛀醉。
函數(shù)length()返回向量的長(zhǎng)度,mode()返回向量的數(shù)據(jù)類(lèi)型
> length(x1)
[1] 3
> mode(x1)
[1] "numeric"
2.創(chuàng)建矩陣(二維數(shù)組)
1)合并向量成矩陣
rbind()按行合并衅码,cbind()按列合并
> x2=c(3,2,1,6)
> rbind(x1,x2)
?[,1] [,2] [,3] [,4]
x1 71 75 59 71
x2 3 2 1 6
警告信息:
In rbind(x1, x2) :number of columns of result is not a multiple of vector length (arg 1)
這里由于x1是1行3列拯刁,而x2是1行4列,所以按行合并時(shí)逝段,會(huì)按照較長(zhǎng)的向量x2來(lái)垛玻,x1的第四位會(huì)自動(dòng)循環(huán)補(bǔ)上。
> cbind(x1,x2)
x1 x2
[1,] 71 3
[2,] 75 2
[3,] 59 1
[4,] 71 6
2)生成矩陣
matrix(data=NA,nrow=1,ncol=1,byrow=FLASE,dimnames=NULL)
data為矩陣元素惹恃,nrow為行數(shù)夭谤,ncol為列數(shù),byrow為元素是否按照行來(lái)排列巫糙,dimnames為行列的名稱(chēng)
> matrix(x1,nrow=3,ncol=4)
? ? [,1] [,2] [,3] [,4]
[1,] 71 71 71 71
[2,] 75 75 75 75
[3,] 59 59 59 59
3.矩陣轉(zhuǎn)置朗儒、加減乘、對(duì)角参淹、求逆
轉(zhuǎn)置函數(shù)為t() 或transpose()
+醉锄,-
乘為%*%
對(duì)一個(gè)向量用diag()函數(shù)將對(duì)產(chǎn)生以這個(gè)向量為對(duì)角元素的矩陣
solve(A,b)運(yùn)算結(jié)果可解線性方程組Ax=b,若b缺省,則直接solve(A)求解A的逆矩陣
4.特征值與特征向量浙值、Choleskey分解恳不、奇異值分解、QR分解开呐、Kronecker積烟勋、維數(shù)
矩陣A的譜分解為A=UVU',V是由A的特征值組成的對(duì)角矩陣筐付,U的列為A的特征值對(duì)應(yīng)的特征向量卵惦,可以用函數(shù)eigen()得到U和V
eigen(x,symmetric,only.values=FALSE,EISPACK=FALSE)
其中x為矩陣,symmetric項(xiàng)指定矩陣x是否為對(duì)稱(chēng)矩陣瓦戚,若不指定沮尿,系統(tǒng)將自動(dòng)檢測(cè)x是否對(duì)稱(chēng)
對(duì)于正定矩陣A,可對(duì)其進(jìn)行Choleskey分解较解,即A=PP'畜疾,其中P為上三角矩陣可以用函數(shù)chol()來(lái)分解。
A為m*n矩陣印衔,rank(A)=r,可以分解為A=UDV'啡捶,其中U'U=V'V=I,可以用svd()來(lái)對(duì)矩陣進(jìn)行奇異值分解奸焙。
A為m*n矩陣届慈,可以進(jìn)行QR分解徒溪,A=QR,其中Q'Q=I,可用qr()分解金顿。
n*m矩陣A與h*k矩陣B的kronecker積為一個(gè)nh*mk維矩陣,kronecker()來(lái)實(shí)現(xiàn)鲤桥。
dim()返回矩陣維數(shù)揍拆,nrow()返回行數(shù),ncol()返回列數(shù)茶凳。
5.矩陣行和嫂拴、列和、行平均贮喧、列平均
rowSums()
rowMeans()
colSums()
colMeans()
apply(X,MARGIN,FUN,……)
X為矩陣筒狠,MARGIN用來(lái)指定是對(duì)行運(yùn)算還是對(duì)列運(yùn)算,MAGRIN=1表示對(duì)行箱沦,2表示對(duì)列辩恼,F(xiàn)UN用來(lái)指定運(yùn)算函數(shù),……用來(lái)給FUN中需要的其他參數(shù)
apply(A,1,sum)
apply功能強(qiáng)大谓形,可以靈活使用灶伊。
數(shù)據(jù)框表示
數(shù)據(jù)框是一種矩陣形式的數(shù)據(jù),但數(shù)據(jù)框中各列可以不同類(lèi)型的數(shù)據(jù)寒跳,每列是一個(gè)變量聘萨,每行是一個(gè)觀測(cè)值,數(shù)據(jù)框是R語(yǔ)言特有的數(shù)據(jù)類(lèi)型童太,很有用米辐。
data.frame()生成數(shù)據(jù)框
例如X=data.frame(x1,x2)
X1,X2若為向量時(shí),必須列數(shù)相同书释。