




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、R因子列表數(shù)據(jù)框與輸入輸出 第四講 R的數(shù)據(jù)結(jié)構(gòu)(二) 因子、列表、數(shù)據(jù)框 學(xué)習(xí)學(xué)習(xí)R中中的表示方法的表示方法 數(shù)據(jù)表示方法數(shù)據(jù)表示方法 實(shí)例實(shí)例 作業(yè)作業(yè) R因子列表數(shù)據(jù)框與輸入輸出 因子(factor)和有序因子 統(tǒng)計(jì)中的變量重要類別 連續(xù): 區(qū)間變量 離散: 名義變量、有序變量 區(qū)間變量取連續(xù)的數(shù)值,可以求和、算平均等。 名義變量和有序變量取離散值,既可用數(shù)值表示 也可取字符型值,其具體數(shù)值沒(méi)有數(shù)量意義,不 能用于加減乘除計(jì)算而只能用來(lái)分類或者計(jì)數(shù)。 名義變量比如性別、省份、職業(yè),有序變量比如 班級(jí)名次、質(zhì)量等級(jí)等。 因?yàn)殡x散變量有各種不同表示方法,在R中為統(tǒng) 一起見使用因子(facto
2、r)來(lái)表示這種分類變量。還 提供了有序因子(ordered factor)來(lái)表示有序變量。 R因子列表數(shù)據(jù)框與輸入輸出 因子是一種特殊的字符型向量,其中每一個(gè)元素 取一組離散值中的一個(gè),而因子對(duì)象有一個(gè)特殊 屬性levels表示這組離散值(用字符串表示)。例 如: x y y 1 男 女 男 男 女 Levels: 男 女 函數(shù)factor()用來(lái)把一個(gè)向量編碼成為一個(gè)因子。一般 形式為: factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE) R因子列表數(shù)據(jù)框與輸入輸
3、出 可以自行指定各離散取值水平(levels),不指定 時(shí)由x的不同值來(lái)求得。 labels可以用來(lái)指定各水平的標(biāo)簽,不指定時(shí)用各 離散取值的對(duì)應(yīng)字符串。 exclude參數(shù)用來(lái)指定要轉(zhuǎn)換為缺失值(NA)的元 素值集合。如果指定了levels,則因子的第i個(gè)元素 當(dāng)它等于水平中第j個(gè)時(shí)元素值取“j”,如果它的值 沒(méi)有出現(xiàn)在levels中則對(duì)應(yīng)因子元素值取NA。 ordered取真值時(shí)表示因子水平是有次序的(按編碼 次序)。 可以用is.factor()檢驗(yàn)對(duì)象是否因子,用as.factor()把 一個(gè)向量轉(zhuǎn)換成一個(gè)因子。 R因子列表數(shù)據(jù)框與輸入輸出 x y y 1 男 女 男 男 女 Leve
4、ls: 男 女 x y y 1 男 女 男 男 女 Levels: 男 女 R因子列表數(shù)據(jù)框與輸入輸出 因子的基本統(tǒng)計(jì)是頻數(shù)統(tǒng)計(jì),用函數(shù)table()來(lái)計(jì)數(shù)。 例如, sex res.tab res.tab 男 女 3 2 表示男性3人,女性2人。table()的結(jié)果是一個(gè)帶元素名的向 量,元素名為因子水平,元素值為該水平出現(xiàn)的頻數(shù)。 R的結(jié)果除了可以顯示外,本身都是R對(duì)象(如這里的向量 結(jié)果),可以很方便地進(jìn)一步處理。 可以用兩個(gè)或多個(gè)因子進(jìn)行交叉分類。比如,性別(sex) 和職業(yè)(job)交叉分組可以用table(sex, job)來(lái)統(tǒng)計(jì)每一交 叉類的頻數(shù),結(jié)果為一個(gè)矩陣,矩陣帶有行名和列
5、名,分 別為兩個(gè)因子的各水平名。 R因子列表數(shù)據(jù)框與輸入輸出 因子可以用來(lái)作為另外的同長(zhǎng)度變量的分類變量。 比如,假設(shè)上面的sex是5個(gè)學(xué)生的性別,而 h table(h, sex) sex h 男 女 159 0 1 165 1 0 168 1 0 170 0 1 172 1 0 tapply(h, sex, mean) #可以求按性別分類的身高 平均值。 男 女 168.3333 164.5000 R因子列表數(shù)據(jù)框與輸入輸出 列表(list)定義 列表是一種特別的對(duì)象集合,它的元素也由序號(hào) (下標(biāo))區(qū)分,但是各元素的類型可以是任意對(duì)象, 不同元素不必是同一類型。元素本身允許是其它復(fù) 雜數(shù)據(jù)
6、類型,比如,列表的一個(gè)元素也允許是列表。 列表元素用“列表名下標(biāo)”的格式引用。 但是,列表不同于向量,我們每次只能引用一個(gè)元 素,如rec1:2的用法是不允許的。 “列表名下標(biāo)”或“列表名下標(biāo)范圍”的用 法也是合法的,但其意義與用兩重括號(hào)的記法完全 不同,兩重記號(hào)取出列表的一個(gè)元素,結(jié)果與該元 素類型相同,如果使用一重括號(hào),則結(jié)果是列表的 一個(gè)子列表(結(jié)果類型仍為列表)。 R因子列表數(shù)據(jù)框與輸入輸出 rec = list(name=李明, age=30, scores=c(85, 76, 90) rec $name 1 李明 $age 1 30 $scores 1 85 76 90 rec1
7、$name 1 李明 rec1 1 李明 rec2 $age 1 30 rec2 1 30 rec3 $scores 1 85 76 90 rec3 1 85 76 90 rec31:2 1 85 76 mode(rec1) 1 list mode(rec1) 1 character R因子列表數(shù)據(jù)框與輸入輸出 在定義列表時(shí)如果指定了元素的名字(如rec中的 name,age,scores),則引用列表元素還可以用 它的名字作為下標(biāo),格式為“列表名元素名 ”,如: recage 1 30 另一種格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以簡(jiǎn)寫到與其它元素名能夠區(qū)
8、 分的最短程度,比如“rec$s”可以代表 “rec$score”。 這種寫法方便了交互運(yùn)行,編寫程序時(shí)一般不用 簡(jiǎn)寫,以免降低了程序的可讀性。 R因子列表數(shù)據(jù)框與輸入輸出 使用元素名的引用方法可以讓我們不必記住 某一個(gè)下標(biāo)代表那一個(gè)元素,而直接用易記 的元素名來(lái)引用元素。事實(shí)上,已知向量和 矩陣都可以指定元素名、行名、列名。 定義列表使用list()函數(shù),每一個(gè)自變量變成 列表的一個(gè)元素,自變量可以用“名字值” 的方式給出,即給出列表元素名。 自變量的值被復(fù)制到列表元素中,自變量如 果是變量并不會(huì)與該列表元素建立關(guān)系(改 變?cè)摿斜碓夭粫?huì)改變自變量的值)。(例 見后) R因子列表數(shù)據(jù)框與輸入
9、輸出 修改列表修改列表 列表的元素可以修改,只要把元素引用賦值即可。 如: rec$age rec$age rec$sex rec6 rec R因子列表數(shù)據(jù)框與輸入輸出 rec$sex rec6 rec $name 1 李明 $age 1 30 $scores 1 85 76 90 $sex 1 男 5 NULL 6 1 161 sex rec1 rec1 rec11= 女 rec1 sex R因子列表數(shù)據(jù)框與輸入輸出 第 五 號(hào) 元 素 因 為 沒(méi) 有 定 義 所 以 其 值 是 “NULL”,這是空對(duì)象的記號(hào)。 如果rec是一個(gè)向量,則其空元素為“NA”, 這是缺失值的記號(hào)。從這里我們也可
10、以體會(huì) “NULL”與“NA”的區(qū)別。 幾個(gè)列表可以用連接函數(shù)c()連接起來(lái),結(jié)果 仍為一個(gè)列表,其元素為各自變量的列表元 素。如: list.ABC list.A = list(name=李明, age=30, scores=c(85, 76, 90) list.B = list(name=張三, age=27, scores=c(87, 91, 84) list.C = list(name=王五, age=28, scores=c(91, 90, 89) list.ABC list.ABC $name 1 李明 $age 1 30 $scores 1 85 76 90 $name 1 張三
11、 $age 1 27 $scores 1 87 91 84 $name 1 王五 $age 1 28 $scores 1 91 90 89 R因子列表數(shù)據(jù)框與輸入輸出 幾個(gè)返回列表的函數(shù)幾個(gè)返回列表的函數(shù) 列表的重要作用是把相關(guān)的若干數(shù)據(jù)保存 在一個(gè)數(shù)據(jù)對(duì)象中,這樣在編寫函數(shù)時(shí)我 們就可以返回這樣一個(gè)包含多項(xiàng)輸出的列 表。 因?yàn)楹瘮?shù)的返回結(jié)果可以完整地存放在一 個(gè)列表中,我們可以繼續(xù)對(duì)得到的結(jié)果進(jìn) 行分析,這是R語(yǔ)言比SAS靈活的一個(gè)地方。 下面給出幾個(gè)返回列表的例子。 R因子列表數(shù)據(jù)框與輸入輸出 一、特征值和特征向量一、特征值和特征向量 函數(shù)eigen(x)對(duì)對(duì)稱矩陣x計(jì)算其特征值和特征向量
12、, 返回結(jié)果為一個(gè)列表,列表的兩個(gè)成員(元素)為 values和vectors。例如: ev ev $values 1 1.400000e+01 9.176554e-16 -1.023391e-15 $vectors ,1 ,2 ,3 1, -0.2672612 0.6067775 0.7485937 2, -0.5345225 0.5530299 -0.6390960 3, -0.8017837 -0.5709457 0.1765328 特征向量按矩陣存放,每一列為一個(gè)特征向量。 R因子列表數(shù)據(jù)框與輸入輸出 二、奇異值分解及行列式二、奇異值分解及行列式 svd()函數(shù)進(jìn)行奇異值分解函數(shù)進(jìn)行奇
13、異值分解 自學(xué)自學(xué) 三、最小二乘擬合與三、最小二乘擬合與QR分解分解 函數(shù)lsfit(x,y)返回最小二乘擬合的結(jié)果。最小二乘 的模型為線性模型 lsfit(x,y)的第一個(gè)參數(shù)x為模型中的設(shè)計(jì)陣,第二個(gè) 參數(shù)y為模型中的因變量y(可以是一個(gè)向量也可以 是一個(gè)矩陣),返回一個(gè)列表,成員coefficients為 上面模型的最小二乘系數(shù),成員residuals為擬合殘 差,成員intercept用來(lái)指示是否有截距項(xiàng),成員qr 為設(shè)計(jì)陣 的QR分解,它本身又是一個(gè)列表。 YX R因子列表數(shù)據(jù)框與輸入輸出 simu.1 - function(n, p,trueb) x -matrix(rnorm(n
14、*p),n,p) y -x%*%trueb+rnorm(n) lsfit(x,y) #Example: n - 100 p - 3 trueb x y y $qr ,1 ,2 ,3 1, -8.1240384 -9.6011363 -1.107823e+01 2, 0.4923660 0.9045340 1.809068e+00 3, 0.8616404 0.9954736 -2.220446e-16 $rank 1 2 $qraux 1 1.123091e+00 1.095039e+00 2.220446e-16 $pivot 1 1 2 3 attr(,class) 1 qr R因子列表數(shù)
15、據(jù)框與輸入輸出 n - 100 p - 3 trueb-c(-3,-2,2) x -matrix(rnorm(n*p),n,p) y -x%*%trueb+rnorm(n) beta-qr.coef(qr(x),y) beta Result d=list(name=c(趙, 錢, 孫, 李, 王),age=c(20,21,22,21,20),height= c(170,171,175,165,181),gender=c(男, 女, 男, 女, 男 ) d name age height gender 1 趙 20 170 男 2 錢 21 171 女 3 孫 22 175 男 4 李 21 1
16、65 女 5 王 20 181 男 如果一個(gè)列表的各個(gè)成分滿足數(shù)據(jù)框成分的要求,它可以用 as.data.frame()函數(shù)強(qiáng)制轉(zhuǎn)換為數(shù)據(jù)框。比如,上面的d如果先用list()函 數(shù)定義成了一個(gè)列表,就可以強(qiáng)制成為一個(gè)數(shù)據(jù)框。 一個(gè)矩陣可以用data.frame()轉(zhuǎn)換為一個(gè)數(shù)據(jù)框,如果它原 來(lái)有列名則其列名被作為數(shù)據(jù)框的變量名,否則系統(tǒng)自動(dòng) 為矩陣的各列起一個(gè)變量名(如V1,V2)。 R因子列表數(shù)據(jù)框與輸入輸出 d name age height gender 1 趙 20 170 男 2 錢 21 171 女 3 孫 22 175 男 4 李 21 165 女 5 王 20 181 男 d
17、1 name 1 趙 2 錢 3 孫 4 李 5 王 d1 1 趙 錢 孫 李 王 Levels: 李 錢 孫 王 趙 d22:3 1 21 22 d1-list(name=c(趙, 錢, 孫, 李, 王), age=c(20,21,22,21,20),height= c(170,171,175,165,181),gender=c (男, 女, 男, 女, 男 ) d names(d) 1 name age height gender rownames(d) 1 1 2 3 4 5 R因子列表數(shù)據(jù)框與輸入輸出 table(d4) 男 女 3 2 table(d4) 男 女 3 2 tapply
18、(d3,d4, mean) 男 女 175.3333 168.0000 tapply(d3,d4, mean) 錯(cuò)誤在tapply(d3, d4, mean) : 變?cè)拈L(zhǎng)度必需相同 d3/d2 1 8.500000 8.142857 7.954545 7.857143 9.050000 R因子列表數(shù)據(jù)框與輸入輸出 attach()函數(shù)函數(shù) 數(shù)據(jù)框的主要用途是保存統(tǒng)計(jì)建模需要的數(shù)據(jù)。R的 統(tǒng)計(jì)建模功能都需要以數(shù)據(jù)框?yàn)檩斎霐?shù)據(jù)。我們也 可以把數(shù)據(jù)框當(dāng)成一種矩陣來(lái)處理。 在使用數(shù)據(jù)框的變量時(shí)可以用“數(shù)據(jù)框名$變量名” 的記法。但是,這樣使用較麻煩,R提供了attach() 函數(shù)可以把數(shù)據(jù)框“鏈接”
19、到內(nèi)存中。例如, attach(d) r d$r cat(i = , i, n) 注意使用cat()時(shí)要自己加上換行符“n”。它把各項(xiàng) 轉(zhuǎn)換成字符串,中間隔以空格連接起來(lái),然后顯示。 cat(c(AB, C), c(E, F), n) AB C E F 如果要使用自定義的分隔符,可以用sep=參數(shù), 例如: cat(c(AB, C), c(E, F), n, sep=) ABCEF cat()還可以指定一個(gè)參數(shù)file=給一個(gè)文件名,可以把 結(jié)果寫到指定的文件中,如: cat(i = , 1, n, file=c:/work/result.txt) # 非常適用于中間或最后結(jié)果的存儲(chǔ)。 cat
20、(c(AB, C), c(E, F), n,file=c:/result.txt) R因子列表數(shù)據(jù)框與輸入輸出 cat()函數(shù)和print()都不具有很強(qiáng)的自定義格式功能, 為此可以使用cat()與format() 函數(shù)配合實(shí)現(xiàn)。format() 函數(shù)為一個(gè)數(shù)值向量找到一種共同的顯示格式然后 把向量轉(zhuǎn)換為字符型。例如: format(c(1, 100, 10000) 1 1 100 10000 S-PLUS中的format()函數(shù)功能較強(qiáng),具有較多的控制 參數(shù),請(qǐng)參見幫助。 R中目前format() 函數(shù)功能仍較弱,但R有一個(gè) formatC函數(shù)可以提供類似C語(yǔ)言的printf格式功能。 formatC對(duì)輸入向量的每一個(gè)元素單獨(dú)進(jìn)行格式轉(zhuǎn)換 而不生成統(tǒng)一格式,例如: formatC(c(1, 0.00001) 1 1 1e-05 R因子列表數(shù)據(jù)框與輸入輸出 在formatC()函數(shù)中可以用format=參數(shù)指定C 格式類型,如“d”(整數(shù)),“f”(定點(diǎn)實(shí) 數(shù)),“e”(科學(xué)記數(shù)法),“E”, “g”(選擇 位數(shù)較少的輸出格式),“G”, “fg”(定點(diǎn)實(shí)數(shù)但 用digits 指定有效位數(shù)),“s”(字符串)。 可以用width指定輸出寬度,用digi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JG 149-2003膨脹聚苯板薄抹灰外墻外保溫系統(tǒng)
- GM/T 0126-2023HTML密碼應(yīng)用置標(biāo)語(yǔ)法
- DZ/T 0060-1993巖溶地區(qū)工程地質(zhì)調(diào)查規(guī)程(比例尺1∶10萬(wàn)~1∶20萬(wàn))
- CJ/T 44-1999水處理用無(wú)煙煤濾料
- CJ/T 256-2007分體先導(dǎo)式減壓穩(wěn)壓閥
- 高校資源軟件評(píng)測(cè)師試題及答案
- 澳洲子女測(cè)試題及答案
- 項(xiàng)目管理中常見誤區(qū)試題及答案
- 監(jiān)察法微測(cè)試題及答案
- 深入分析2025年多媒體技術(shù)的發(fā)展及試題及答案
- 國(guó)家開放大學(xué)2025年春《形勢(shì)與政策》形考任務(wù)1-5和大作業(yè)參考答案
- 安全生產(chǎn) 規(guī)章制度和安全操作規(guī)程
- 河南省洛陽(yáng)市伊川縣2024-2025學(xué)年七年級(jí)下學(xué)期期中生物試題(含答案)
- 工人下班免責(zé)協(xié)議書
- 美術(shù)有趣的課件
- 健康活動(dòng):快樂(lè)生活的源泉
- 創(chuàng)業(yè)扶持政策對(duì)數(shù)字化轉(zhuǎn)型的影響研究試題及答案
- 產(chǎn)后出血的觀察及護(hù)理
- 2025-2030中國(guó)蘆筍行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 收購(gòu)公司工作方案
- 高級(jí)電工技師試題及答案
評(píng)論
0/150
提交評(píng)論