




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、R因子列表數(shù)據(jù)框與輸入輸出 第四講 R的數(shù)據(jù)結(jié)構(gòu)(二) 因子、列表、數(shù)據(jù)框 學(xué)習(xí)學(xué)習(xí)R中中的表示方法的表示方法 數(shù)據(jù)表示方法數(shù)據(jù)表示方法 實例實例 作業(yè)作業(yè) R因子列表數(shù)據(jù)框與輸入輸出 因子(factor)和有序因子 統(tǒng)計中的變量重要類別 連續(xù): 區(qū)間變量 離散: 名義變量、有序變量 區(qū)間變量取連續(xù)的數(shù)值,可以求和、算平均等。 名義變量和有序變量取離散值,既可用數(shù)值表示 也可取字符型值,其具體數(shù)值沒有數(shù)量意義,不 能用于加減乘除計算而只能用來分類或者計數(shù)。 名義變量比如性別、省份、職業(yè),有序變量比如 班級名次、質(zhì)量等級等。 因為離散變量有各種不同表示方法,在R中為統(tǒng) 一起見使用因子(facto
2、r)來表示這種分類變量。還 提供了有序因子(ordered factor)來表示有序變量。 R因子列表數(shù)據(jù)框與輸入輸出 因子是一種特殊的字符型向量,其中每一個元素 取一組離散值中的一個,而因子對象有一個特殊 屬性levels表示這組離散值(用字符串表示)。例 如: x y y 1 男 女 男 男 女 Levels: 男 女 函數(shù)factor()用來把一個向量編碼成為一個因子。一般 形式為: factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE) R因子列表數(shù)據(jù)框與輸入輸
3、出 可以自行指定各離散取值水平(levels),不指定 時由x的不同值來求得。 labels可以用來指定各水平的標簽,不指定時用各 離散取值的對應(yīng)字符串。 exclude參數(shù)用來指定要轉(zhuǎn)換為缺失值(NA)的元 素值集合。如果指定了levels,則因子的第i個元素 當它等于水平中第j個時元素值取“j”,如果它的值 沒有出現(xiàn)在levels中則對應(yīng)因子元素值取NA。 ordered取真值時表示因子水平是有次序的(按編碼 次序)。 可以用is.factor()檢驗對象是否因子,用as.factor()把 一個向量轉(zhuǎn)換成一個因子。 R因子列表數(shù)據(jù)框與輸入輸出 x y y 1 男 女 男 男 女 Leve
4、ls: 男 女 x y y 1 男 女 男 男 女 Levels: 男 女 R因子列表數(shù)據(jù)框與輸入輸出 因子的基本統(tǒng)計是頻數(shù)統(tǒng)計,用函數(shù)table()來計數(shù)。 例如, sex res.tab res.tab 男 女 3 2 表示男性3人,女性2人。table()的結(jié)果是一個帶元素名的向 量,元素名為因子水平,元素值為該水平出現(xiàn)的頻數(shù)。 R的結(jié)果除了可以顯示外,本身都是R對象(如這里的向量 結(jié)果),可以很方便地進一步處理。 可以用兩個或多個因子進行交叉分類。比如,性別(sex) 和職業(yè)(job)交叉分組可以用table(sex, job)來統(tǒng)計每一交 叉類的頻數(shù),結(jié)果為一個矩陣,矩陣帶有行名和列
5、名,分 別為兩個因子的各水平名。 R因子列表數(shù)據(jù)框與輸入輸出 因子可以用來作為另外的同長度變量的分類變量。 比如,假設(shè)上面的sex是5個學(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)定義 列表是一種特別的對象集合,它的元素也由序號 (下標)區(qū)分,但是各元素的類型可以是任意對象, 不同元素不必是同一類型。元素本身允許是其它復(fù) 雜數(shù)據(jù)
6、類型,比如,列表的一個元素也允許是列表。 列表元素用“列表名下標”的格式引用。 但是,列表不同于向量,我們每次只能引用一個元 素,如rec1:2的用法是不允許的。 “列表名下標”或“列表名下標范圍”的用 法也是合法的,但其意義與用兩重括號的記法完全 不同,兩重記號取出列表的一個元素,結(jié)果與該元 素類型相同,如果使用一重括號,則結(jié)果是列表的 一個子列表(結(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ù)框與輸入輸出 在定義列表時如果指定了元素的名字(如rec中的 name,age,scores),則引用列表元素還可以用 它的名字作為下標,格式為“列表名元素名 ”,如: recage 1 30 另一種格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以簡寫到與其它元素名能夠區(qū)
8、 分的最短程度,比如“rec$s”可以代表 “rec$score”。 這種寫法方便了交互運行,編寫程序時一般不用 簡寫,以免降低了程序的可讀性。 R因子列表數(shù)據(jù)框與輸入輸出 使用元素名的引用方法可以讓我們不必記住 某一個下標代表那一個元素,而直接用易記 的元素名來引用元素。事實上,已知向量和 矩陣都可以指定元素名、行名、列名。 定義列表使用list()函數(shù),每一個自變量變成 列表的一個元素,自變量可以用“名字值” 的方式給出,即給出列表元素名。 自變量的值被復(fù)制到列表元素中,自變量如 果是變量并不會與該列表元素建立關(guān)系(改 變該列表元素不會改變自變量的值)。(例 見后) 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ù)框與輸入輸出 第 五 號 元 素 因 為 沒 有 定 義 所 以 其 值 是 “NULL”,這是空對象的記號。 如果rec是一個向量,則其空元素為“NA”, 這是缺失值的記號。從這里我們也可
10、以體會 “NULL”與“NA”的區(qū)別。 幾個列表可以用連接函數(shù)c()連接起來,結(jié)果 仍為一個列表,其元素為各自變量的列表元 素。如: 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ù)框與輸入輸出 幾個返回列表的函數(shù)幾個返回列表的函數(shù) 列表的重要作用是把相關(guān)的若干數(shù)據(jù)保存 在一個數(shù)據(jù)對象中,這樣在編寫函數(shù)時我 們就可以返回這樣一個包含多項輸出的列 表。 因為函數(shù)的返回結(jié)果可以完整地存放在一 個列表中,我們可以繼續(xù)對得到的結(jié)果進 行分析,這是R語言比SAS靈活的一個地方。 下面給出幾個返回列表的例子。 R因子列表數(shù)據(jù)框與輸入輸出 一、特征值和特征向量一、特征值和特征向量 函數(shù)eigen(x)對對稱矩陣x計算其特征值和特征向量
12、, 返回結(jié)果為一個列表,列表的兩個成員(元素)為 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 特征向量按矩陣存放,每一列為一個特征向量。 R因子列表數(shù)據(jù)框與輸入輸出 二、奇異值分解及行列式二、奇異值分解及行列式 svd()函數(shù)進行奇異值分解函數(shù)進行奇
13、異值分解 自學(xué)自學(xué) 三、最小二乘擬合與三、最小二乘擬合與QR分解分解 函數(shù)lsfit(x,y)返回最小二乘擬合的結(jié)果。最小二乘 的模型為線性模型 lsfit(x,y)的第一個參數(shù)x為模型中的設(shè)計陣,第二個 參數(shù)y為模型中的因變量y(可以是一個向量也可以 是一個矩陣),返回一個列表,成員coefficients為 上面模型的最小二乘系數(shù),成員residuals為擬合殘 差,成員intercept用來指示是否有截距項,成員qr 為設(shè)計陣 的QR分解,它本身又是一個列表。 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 男 如果一個列表的各個成分滿足數(shù)據(jù)框成分的要求,它可以用 as.data.frame()函數(shù)強制轉(zhuǎn)換為數(shù)據(jù)框。比如,上面的d如果先用list()函 數(shù)定義成了一個列表,就可以強制成為一個數(shù)據(jù)框。 一個矩陣可以用data.frame()轉(zhuǎn)換為一個數(shù)據(jù)框,如果它原 來有列名則其列名被作為數(shù)據(jù)框的變量名,否則系統(tǒng)自動 為矩陣的各列起一個變量名(如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) 錯誤在tapply(d3, d4, mean) : 變元的長度必需相同 d3/d2 1 8.500000 8.142857 7.954545 7.857143 9.050000 R因子列表數(shù)據(jù)框與輸入輸出 attach()函數(shù)函數(shù) 數(shù)據(jù)框的主要用途是保存統(tǒng)計建模需要的數(shù)據(jù)。R的 統(tǒng)計建模功能都需要以數(shù)據(jù)框為輸入數(shù)據(jù)。我們也 可以把數(shù)據(jù)框當成一種矩陣來處理。 在使用數(shù)據(jù)框的變量時可以用“數(shù)據(jù)框名$變量名” 的記法。但是,這樣使用較麻煩,R提供了attach() 函數(shù)可以把數(shù)據(jù)框“鏈接”
19、到內(nèi)存中。例如, attach(d) r d$r cat(i = , i, n) 注意使用cat()時要自己加上換行符“n”。它把各項 轉(zhuǎn)換成字符串,中間隔以空格連接起來,然后顯示。 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()還可以指定一個參數(shù)file=給一個文件名,可以把 結(jié)果寫到指定的文件中,如: cat(i = , 1, n, file=c:/work/result.txt) # 非常適用于中間或最后結(jié)果的存儲。 cat
20、(c(AB, C), c(E, F), n,file=c:/result.txt) R因子列表數(shù)據(jù)框與輸入輸出 cat()函數(shù)和print()都不具有很強的自定義格式功能, 為此可以使用cat()與format() 函數(shù)配合實現(xiàn)。format() 函數(shù)為一個數(shù)值向量找到一種共同的顯示格式然后 把向量轉(zhuǎn)換為字符型。例如: format(c(1, 100, 10000) 1 1 100 10000 S-PLUS中的format()函數(shù)功能較強,具有較多的控制 參數(shù),請參見幫助。 R中目前format() 函數(shù)功能仍較弱,但R有一個 formatC函數(shù)可以提供類似C語言的printf格式功能。 formatC對輸入向量的每一個元素單獨進行格式轉(zhuǎn)換 而不生成統(tǒng)一格式,例如: formatC(c(1, 0.00001) 1 1 1e-05 R因子列表數(shù)據(jù)框與輸入輸出 在formatC()函數(shù)中可以用format=參數(shù)指定C 格式類型,如“d”(整數(shù)),“f”(定點實 數(shù)),“e”(科學(xué)記數(shù)法),“E”, “g”(選擇 位數(shù)較少的輸出格式),“G”, “fg”(定點實數(shù)但 用digits 指定有效位數(shù)),“s”(字符串)。 可以用width指定輸出寬度,用digi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年低碳經(jīng)濟發(fā)展考試試題及答案動態(tài)分析
- 校園運動會的一天記事文章(5篇)
- 難忘的班級集體活動事件作文11篇
- 高中英語語法復(fù)習(xí)課教案:時態(tài)辨析與實踐運用
- 2025年泡騰劑項目立項申請報告模板
- 我們一起游泳難忘的夏日時光作文(12篇)
- 2025年成人高考《語文》古詩詞文學(xué)性與藝術(shù)性試題庫
- 2025年春季小學(xué)五年級數(shù)學(xué)期末沖刺卷:數(shù)學(xué)思維拓展與訓(xùn)練
- 2025年電子商務(wù)師(中級)職業(yè)技能鑒定試卷:電商短視頻電商數(shù)據(jù)分析
- 2025年專升本藝術(shù)概論考試模擬卷(藝術(shù)審美心理與藝術(shù)史研究前沿課題)
- 2024吉林省國資委出資企業(yè)招聘筆試參考題庫含答案解析
- 2024山西航空產(chǎn)業(yè)集團有限公司招聘筆試參考題庫附帶答案詳解
- JJG 164-2000液體流量標準裝置
- 光伏運維技能大賽考試題庫及答案
- 大學(xué)生實習(xí)實踐的職業(yè)素養(yǎng)與職業(yè)道德1
- JBT 14346-2023 建筑施工機械與設(shè)備 泥水平衡頂管機 (正式版)
- XXXX造價管理精講講義第五章工程項目投融資
- 李辛演講-現(xiàn)代人的壓力與管理
- 2024屆遼寧省沈陽市沈河區(qū)物理八下期末考試試題含解析
- 激光先進制造技術(shù) 課件 第3章 激光熔覆技術(shù)
- 醫(yī)院與商會合作協(xié)議
評論
0/150
提交評論