R語(yǔ)言-數(shù)據(jù)結(jié)構(gòu)入門(mén)-2

R語(yǔ)言的學(xué)習(xí)

開(kāi)始


??? 開(kāi)始R語(yǔ)言的學(xué)習(xí)已經(jīng)有一段時(shí)間了,正在按計(jì)劃開(kāi)始學(xué)習(xí),雖然年底有點(diǎn)忙還是堅(jiān)持按計(jì)劃進(jìn)行學(xué)習(xí),這是學(xué)習(xí)的第一個(gè)節(jié)點(diǎn)時(shí)間,也該總結(jié)一下學(xué)習(xí)的成果,同時(shí)也勉勵(lì)一下自己堅(jiān)持,就像笑來(lái)老師說(shuō)“短期期望不要太高,長(zhǎng)期期望不要太低”。




第一章 R語(yǔ)言介紹


1.1為何要使用R

優(yōu)勢(shì):

免費(fèi),開(kāi)源的社群模式,支持各種圖標(biāo)創(chuàng)作,是一個(gè)可進(jìn)行交互式數(shù)據(jù)分析和探索的強(qiáng)大平臺(tái),從多個(gè)數(shù)據(jù)獲取數(shù)據(jù)轉(zhuǎn)化為可用,各種圖形界面支持GUI,支持各種系統(tǒng)

難點(diǎn):

由于許多功能都是由獨(dú)立貢獻(xiàn)者編寫(xiě)的可選模塊提供的,這些文檔可能比較零散而且很難找到。事實(shí)上,要掌握R的所有功能,可以說(shuō)是一項(xiàng)挑戰(zhàn)。

1.2 R的獲取和安裝

R可以在CRAN(Comprehensive R Archive Network)http://cran.r-project.org上免費(fèi)下載

疑問(wèn):CRAN下載和安裝???已經(jīng)見(jiàn)解決(見(jiàn)R語(yǔ)言分享第一篇文章)

1.3 R的使用

注意:rnorm(5)-> x與x<-rnorm(5)的語(yǔ)句等價(jià),注釋由符號(hào)#開(kāi)頭。在#之后出現(xiàn)的任何文本都會(huì)被R解釋器忽略

1.3.2獲取幫助



實(shí)例:



1.4包

R提供了大量開(kāi)箱即用的功能,但它最激動(dòng)人心的一部分功能通過(guò)可選模塊的下載和安裝來(lái)實(shí)現(xiàn)的。

使用命令 install.packages()安裝包? update.packages()更新安裝包? installed.packages()例出安裝包。

1.5批處理

outfile是接收輸出文件的文件名,options部分則列出了控制執(zhí)行細(xì)節(jié)的選項(xiàng)。依照慣例,infile的擴(kuò)展名是.R,outfile的擴(kuò)展名為.Rout。

圖來(lái)源于R語(yǔ)言實(shí)戰(zhàn)

第二章 創(chuàng)建數(shù)據(jù)集

2.1數(shù)據(jù)集的概念

R可以處理的數(shù)據(jù)類(lèi)型(模式)包括數(shù)值型、字符型、邏輯型(TRUE / FALSE)、復(fù)數(shù)型(虛

數(shù))和原生型(字節(jié))。在R中,PatientID、AdmDate和Age為數(shù)值型變量,而Diabetes和Status則為字符型變量。另外,你需要分別告訴R:PatientID是實(shí)例標(biāo)識(shí)符,AdmDate含有日期數(shù)據(jù),Diabetes和Status分別是名義型和有序型變量。R將實(shí)例標(biāo)識(shí)符稱(chēng)為rownames(行名),將類(lèi)

別型(包括名義型和有序型)變量稱(chēng)為因子(factors)。


圖來(lái)源于R語(yǔ)言實(shí)戰(zhàn)

2.2數(shù)據(jù)結(jié)構(gòu)

注意:

1,單個(gè)向量中的數(shù)據(jù)必須,擁有相同的類(lèi)型或模式(數(shù)值型、字符型或邏輯型)。同一向量中無(wú)法混雜不同模式的數(shù)據(jù)。

2,標(biāo)量是只含一個(gè)元素的向量,例如f <- 3、g <- "US"和h <- TRUE,它們用于保存常量。

3,通過(guò)在方括號(hào)中給定元素所處位置的數(shù)值。

4,最后一個(gè)語(yǔ)句中使用的冒號(hào)用于生成一個(gè)數(shù)值序列

實(shí)例向量:


2.2.2矩陣

矩陣是一個(gè)二維數(shù)組,只是每個(gè)元素都擁有相同的模式(數(shù)值型、字符型或邏輯型)。可通

過(guò)函數(shù)matrix()創(chuàng)建矩陣。

實(shí)例

#矩陣

y<-matrix(1:20,nrow = 4,ncol = 5) #創(chuàng)建矩陣行4例5

cells <-c(1,2,3,4)

rnames <-c("r1","r2")

cnames <-c("c1","c2")

newmatrix <-matrix(cells,nrow = 2,ncol = 2,byrow = T,dimnames =list(rnames,cnames))#按行填充

newmatrix

twomatrix <-matrix(cells,nrow = 2,ncol = 2,byrow = F,

dimnames =list(rnames,cnames))#按例填充

Twomatrix

注意:

其中vector包含了矩陣的元素,nrow和ncol用以指定行和列的維數(shù),dimnames包含了可選

的、以字符型向量表示的行名和列名。選項(xiàng)byrow則表明矩陣應(yīng)當(dāng)按行填充(byrow=TRUE)

還是按列填充(byrow=FALSE)

實(shí)例:

YY <- matrix(1:10,nrow = 2)

> YY

[,1] [,2] [,3] [,4] [,5]

[1,]13579

[2,]246810

> YY[2,]#取行

[1]2468 10

> YY[,2]#取例

[1] 3 4

> YY[2,4]#取只定行列

[1] 8

>

YY[2,c(3,5)]#確制定行的多例

[1]6 10

>

2.2.3數(shù)組

數(shù)組(array)與矩陣類(lèi)似,但是維度可以大于2。數(shù)組可通過(guò)array函數(shù)創(chuàng)建,形式如下:

myarray <-array(vector, dimensions, dimnames)

其中vector包含了數(shù)組中的數(shù)據(jù),dimensions是一個(gè)數(shù)值型向量,給出了各個(gè)維度下標(biāo)的最大值,而dimnames是可選的、各維度名稱(chēng)標(biāo)簽的列表。

注意創(chuàng)建順序?yàn)椋盒欣眄槃?chuàng)建

示例

> sheet1 <- c("A1","A2")# 創(chuàng)建向量

> sheet2 <- c("B1","B2","B3") #創(chuàng)建向量

> sheet3 <-c("c1","c2","c3","c4")# 創(chuàng)建向量

>

> E <- array(1:24,c(2,3,4),dimnames = list(sheet1,sheet2,sheet3))#創(chuàng)建2x3x4 行例表順創(chuàng)建

> E

, , c1

B1 B2 B3

A1135

A2246

, , c2

B1 B2 B3

A179 11

A28 10 12

, , c3

B1 B2 B3

A1 13 15 17

A2 14 16 18

, , c4

B1 B2 B3

A1 19 21 23

A2 20 22 24

> E [1,1,1]# 行列表

[1] 1

2.2.4數(shù)據(jù)框

由于不同的列可以包含不同模式(數(shù)值型、字符型等)的數(shù)據(jù),數(shù)據(jù)框可通過(guò)函數(shù)data.frame()創(chuàng)建:mydata <- data.frame(col1, col2,col3,...)

實(shí)例

#創(chuàng)建數(shù)據(jù)框

> #創(chuàng)建數(shù)據(jù)框

> MYID <- c(1,2,3,4)

> age <- c(21,23,23,25)

> diabetes <-c("T1","T2","T1","T2")

> sad <- c("poor","improved","excellent","poor")

> patientdata <- data.frame(MYID,age,diabetes,sad)

> patientdata

MYID age diabetessad

1121T1poor

2223T2improved

3323T1 excellent

4425T2poor

注意:每一列數(shù)據(jù)的模式必須唯一,不過(guò)你卻可以將多個(gè)模式的不同列放到一起組成數(shù)據(jù)框。Attach注意當(dāng)名稱(chēng)相同的對(duì)象不止一個(gè)時(shí),這種方法的局限性就很明顯了

> summary(mtcars$mpg)

Min. 1st Qu.MedianMean 3rd Qu.Max.

10.4015.4219.2020.0922.8033.90

> attach(mtcars)

> summary(mpg)

Min. 1st Qu.MedianMean 3rd Qu.Max.

10.4015.4219.2020.0922.8033.90

> plot(mpg,disp)

> plot(mpg,wt)

> detach(mtcars)

> mpg <-c(25,36,47)

> attach(mtcars)

with用法示例

with(mtcars,{print(summary(mpg))#輸出到屏幕 統(tǒng)計(jì)概要

+plot(mpg,disp)#對(duì)其繪tu

+plot(mpg,wt)})#對(duì)其繪tu

Min. 1st Qu.MedianMean 3rd Qu.Max.

10.4015.4219.2020.0922.8033.90

注意:

Attach語(yǔ)句的注意:在數(shù)據(jù)框mtcars被綁定(attach)之前,你們的環(huán)境中已經(jīng)有了一個(gè)名為mpg的對(duì)象。在這種情況下,原始對(duì)象將取得優(yōu)先權(quán),這與你們想要的結(jié)果有所出入。由于mpg中有3個(gè)元素而disp中有32個(gè)元素,故plot語(yǔ)句出錯(cuò)。函數(shù)attach()和detach()最好在你分析一個(gè)單獨(dú)的據(jù)框,并且不太可能有多個(gè)同名對(duì)象時(shí)使用。任何情況下,都要當(dāng)心那些告知某個(gè)對(duì)象已被屏蔽(masked)的警告。

wish

函數(shù)with()的局限性在于,賦值僅在此函數(shù)的括號(hào)內(nèi)生效,你需要?jiǎng)?chuàng)建在with()結(jié)構(gòu)以外存在的對(duì)象,使用特殊賦值符<<-替代標(biāo)準(zhǔn)賦值符(<-)即可,它可將對(duì)象保存到with()之外的全局環(huán)境中

> with(mtcars,{N<- summary(mpg)

+ keepstats <<- summary(mpg)})#賦值僅在此函數(shù)的括號(hào)內(nèi)生效

> N

Error: object'N' not found

>keepstats

Min. 1st Qu.MedianMean 3rd Qu.Max.

10.4015.4219.2020.0922.8033.90

注意:將patientID指定為R中標(biāo)記各類(lèi)打印輸出和圖形中實(shí)例名稱(chēng)所用的變量。

2.2.5因子

類(lèi)別(名義型)變量和有序類(lèi)別(有序型)變量在R中稱(chēng)為因子(factor)。

示例

> #因子

> D <- factor(diabetes)#類(lèi)別變量

> D

[1] T1 T2 T1 T2

Levels: T1 T2

>

> status <-c("poor","improved","excellent","poor")#順序變量

>

> status <- factor(status,ordered = T,levels =c("poor","improved","excellent"))

>

> status

[1] poorimprovedexcellent poor

Levels: poor < improved < excellent

數(shù)值型變量可以用levels和labels參數(shù)來(lái)編碼成因子。如果男性被編碼成1,女性被編碼成2,則以下語(yǔ)句:

示例

> sex <- c(1,2)

> sex

[1] 1 2

> sex <- factor(sex, levels=c(1, 2),labels=c("Male", "Female"))#數(shù)值型變量

> sex

[1] MaleFemale

Levels: Male Female

2.2.6列表

列表(list)是R的數(shù)據(jù)類(lèi)型中最為復(fù)雜的一種。一般來(lái)說(shuō),列表就是一些對(duì)象(或成分,component)的有序集合。


對(duì)R語(yǔ)言的學(xué)習(xí)總結(jié)分享,發(fā)現(xiàn)在自己自學(xué)方面的問(wèn)題和經(jīng)驗(yàn)

1,學(xué)習(xí)筆記缺乏一定邏輯性,日后回看的時(shí)候沒(méi)發(fā)看出清晰邏輯思路,筆記應(yīng)該本節(jié)重要內(nèi)容,實(shí)例、需要注意地方,有疑問(wèn)地方這方向進(jìn)行記錄,第一章和第二章自學(xué)筆記太混亂。

2,R語(yǔ)言學(xué)習(xí)確實(shí)枯燥,所以一定抓住高效注意力的時(shí)候進(jìn)行學(xué)習(xí),比如早上注意力明顯高于晚上,這種需要大量注意力的學(xué)習(xí)應(yīng)該反正在自己注意力高效時(shí)段。

3,學(xué)以致用,要結(jié)合實(shí)際工作需求加以練習(xí)才是掌握語(yǔ)法高效手段。

4,學(xué)習(xí)進(jìn)度還低于自己預(yù)期,過(guò)于關(guān)注點(diǎn)上的東西,不懂的可以先放一放,選過(guò)記錄之后往后看,后面可能會(huì)豁然開(kāi)朗。

5,身心疲憊時(shí)候可以聽(tīng)聽(tīng)別人講座,這種有意想不到的收益。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容