Lecture4 因子、列表、數(shù)據(jù)框、及輸入輸出.ppt_第1頁(yè)
Lecture4 因子、列表、數(shù)據(jù)框、及輸入輸出.ppt_第2頁(yè)
Lecture4 因子、列表、數(shù)據(jù)框、及輸入輸出.ppt_第3頁(yè)
Lecture4 因子、列表、數(shù)據(jù)框、及輸入輸出.ppt_第4頁(yè)
Lecture4 因子、列表、數(shù)據(jù)框、及輸入輸出.ppt_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)?zāi)康?實(shí)驗(yàn)內(nèi)容,學(xué)習(xí)S語(yǔ)言中離散變量、混合數(shù)據(jù)的表示方法,1、數(shù)據(jù)表示方法 2、應(yīng)用實(shí)例 3、實(shí)驗(yàn)作業(yè),因子、列表、數(shù)據(jù)框,因子(factor)和有序因子,統(tǒng)計(jì)中的變量重要類(lèi)別: 區(qū)間變量和名義變量、有序變量。 區(qū)間變量取連續(xù)的數(shù)值,可以進(jìn)行求和、平均等運(yùn)算。 名義變量和有序變量取離散值,既可用數(shù)值代表也可用字符型值,其具體數(shù)值沒(méi)有數(shù)量意義,不能用于加減乘除計(jì)算而只能用來(lái)分類(lèi)或者計(jì)數(shù)。名義變量比如性別、省份、職業(yè),有序變量比如班級(jí)名次、質(zhì)量等級(jí)。 因?yàn)殡x散變量有各種不同表示方法,在S中為統(tǒng)一起見(jiàn)使用因子(factor)來(lái)表示這種分類(lèi)變量。還提供了有序因子(ordered factor)來(lái)表

2、示有序變量。,因子是一種特殊的字符型向量,其中每一個(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),可以自行指定各離散取值水平(levels),不指定時(shí)由x的不同值來(lái)求得。 labels可以用來(lái)指定各水平的標(biāo)簽,不指定時(shí)用各離散取值的對(duì)

3、應(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è)因子。, x=c(1,0,1,1,0) y=factor(x,levels=sort(unique(x),decreasing=T),labels=c(男, 女),exclude=NA,order=F) y 1 男 女 男 男 女 L

4、evels: 男 女, x=c(1,0,1,1,0,2) y=factor(x,levels=c(1,0), labels=c(男, 女),exclude=NA,order=F) y 1 男 女 男 男 女 Levels: 男 女,因子的基本統(tǒng)計(jì)是頻數(shù)統(tǒng)計(jì),用函數(shù)table()來(lái)計(jì)數(shù)。例如, sex = factor(c(男, 女, 男, 男, 女) res.tab res.tab 男 女 3 2 表示男性3人,女性2人。table()的結(jié)果是一個(gè)帶元素名的向量,元素名為因子水平,元素值為該水平的出現(xiàn)頻數(shù)。 S的結(jié)果除了可以顯示外,本身都是S對(duì)象(如這里的向量結(jié)果),可以很方便地進(jìn)一步處理。

5、可以用兩個(gè)或多個(gè)因子進(jìn)行交叉分類(lèi)。比如,性別(sex)和職業(yè)(job)交叉分組可以用table(sex, job)來(lái)統(tǒng)計(jì)每一交叉類(lèi)的頻數(shù),結(jié)果為一個(gè)矩陣,矩陣帶有行名和列名,分別為兩個(gè)因子的各水平名。,因子可以用來(lái)作為另外的同長(zhǎng)度變量的分類(lèi)變量。比如,假設(shè)上面的sex是5個(gè)學(xué)生的性別,而 h tapply(h, sex, mean) 可以求按性別分類(lèi)的身高平均值。 這樣用一個(gè)等長(zhǎng)的因子向量對(duì)一個(gè)數(shù)值向量分組的辦法叫做不規(guī)則數(shù)組(ragged array)。后面我們還可以看到更多的因子的應(yīng)用。,列表(list)定義,列表是一種特別的對(duì)象集合,它的元素也由序號(hào)(下標(biāo))區(qū)分,但是各元素的類(lèi)型可以是任

6、意對(duì)象,不同元素不必是同一類(lèi)型。元素本身允許是其它復(fù)雜數(shù)據(jù)類(lèi)型,比如,列表的一個(gè)元素也允許是列表。 列表元素用“列表名下標(biāo)”的格式引用。 但是,列表不同于向量,我們每次只能引用一個(gè)元素,如rec1:2的用法是不允許的。 注意:“列表名下標(biāo)”或“列表名下標(biāo)范圍”的用法也是合法的,但其意義與用兩重括號(hào)的記法完全不同,兩重記號(hào)取出列表的一個(gè)元素,結(jié)果與該元素類(lèi)型相同,如果使用一重括號(hào),則結(jié)果是列表的一個(gè)子列表(結(jié)果類(lèi)型仍為列表)。, rec = list(name=李明, age=30, scores=c(85, 76, 90) rec $name 1 李明 $age 1 30 $scores 1

7、85 76 90, rec1 $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) mode(rec1),在定義列表時(shí)如果指定了元素的名字(如rec中的name,age,scores),則引用列表元素還可以用它的名字作為下標(biāo),格式為“列表名元素名”,如: recage 1 30 另一種格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以簡(jiǎn)寫(xiě)到與其它元素名能夠區(qū)分的最短程度,比如“rec$s”可以代表

8、 “rec$score”。 這種寫(xiě)法方便了交互運(yùn)行,編寫(xiě)程序時(shí)一般不用簡(jiǎn)寫(xiě),以免降低程序的可讀性。,使用元素名的引用方法可以讓我們不必記住某一個(gè)下標(biāo)代表那一個(gè)元素,而直接用易記的元素名來(lái)引用元素。事實(shí)上,已知向量和矩陣也可以指定元素名、行名、列名。 定義列表使用list()函數(shù),每一個(gè)自變量變成列表的一個(gè)元素,自變量可以用“名字值”的方式給出,即給出列表元素名。 自變量的值被復(fù)制到列表元素中,自變量如果是變量并不會(huì)與該列表元素建立關(guān)系(改變?cè)摿斜碓夭粫?huì)改變自變量的值)。(例見(jiàn)后),修改列表,列表的元素可以修改,只要把元素引用賦值即可。 如: rec$age rec$age rec$sex r

9、ec6 rec, 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,第五號(hào)元素因?yàn)闆](méi)有定義所有其值是“NULL”,這是空對(duì)象的記號(hào)。 如果rec是一個(gè)向量,則其空元素為“NA”,這是缺失值的記號(hào)。從這里我們也可以體會(huì)“NULL”與“NA”的區(qū)別。 幾個(gè)列表可以用連接函數(shù)c()連接起來(lái),結(jié)果仍為一個(gè)列表,其元素為各自變量的列表元素。如: list.ABC - c(list.A, list.B, list.C) (注意在S

10、中句點(diǎn)是名字的合法部分,一般沒(méi)有特殊意義。),幾個(gè)返回列表的函數(shù),列表的重要作用是把相關(guān)的若干數(shù)據(jù)保存在一個(gè)數(shù)據(jù)對(duì)象中,這樣在編寫(xiě)函數(shù)時(shí)我們就可以返回這樣一個(gè)包含多項(xiàng)輸出的列表。 因?yàn)楹瘮?shù)的返回結(jié)果可以完整地存放在一個(gè)列表中,我們可以繼續(xù)對(duì)得到的結(jié)果進(jìn)行分析,這是S比SAS靈活的一個(gè)地方。下面給出幾個(gè)返回列表的例子。,一、特征值和特征向量 函數(shù)eigen(x)對(duì)對(duì)稱(chēng)矩陣x計(jì)算其特征值和特征向量,返回結(jié)果為一個(gè)列表,列表的兩個(gè)成員(元素)為values和vectors。例如: ev=eigen(1:3)%o%(1:3) ev $values 1 1.400000e+01 9.176554e-16

11、 -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è)特征向量。,二、奇異值分解及行列式 函數(shù)svd()進(jìn)行奇異值分解 自學(xué),三、最小二乘擬合與QR分解 函數(shù)lsfit(x,y)返回最小二乘擬合的結(jié)果。最小二乘的模型為線(xiàn)性模型 lsfit(x,y)的第一個(gè)參數(shù)x為模型中的設(shè)計(jì)陣 ,第二個(gè)參數(shù)y為模型中的因變量y(可以是一個(gè)向量也可以是一個(gè)矩陣),

12、返回一個(gè)列表,成員coefficients為上面模型的最小二乘系數(shù),成員residuals為擬合殘差,成員intercept用來(lái)指示是否有截距項(xiàng),成員qr為設(shè)計(jì)陣 的QR分解,它本身又是一個(gè)列表。,三、最小二乘擬合與QR分解 關(guān)于最小二乘擬合還可參見(jiàn)ls.diag() 函數(shù)(查看幫助)。 函數(shù)qr(x)返回x的QR分解結(jié)果。矩陣X的QR分解為X=Q*R ,Q為對(duì)角線(xiàn)元素都等于1的下三角陣,R為上三角陣。 函數(shù)結(jié)果為一個(gè)列表,成員qr 為一個(gè)矩陣,其上三角部分(包括對(duì)角線(xiàn))分解的R,其下三角部分(不包括對(duì)角線(xiàn))為分解的Q。其它成員為一些輔助信息。, x=rbind(c(1,2,3),c(4,5,

13、6),c(7,8,9) y=qr(x) y qr.R(y) qr.Q(y) qr.Q(y)%*%qr.R(y), x=rbind(c(1,2,3),c(4,5,6),c(7,8,9) y=qr(x) 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

14、attr(,class) 1 qr, qr.R(y) ,1 ,2 ,3 1, -8.124038 -9.601136 -1.107823e+01 2, 0.000000 0.904534 1.809068e+00 3, 0.000000 0.000000 -2.220446e-16 qr.Q(y) ,1 ,2 ,3 1, -0.1230915 0.9045340 0.4082483 2, -0.4923660 0.3015113 -0.8164966 3, -0.8616404 -0.3015113 0.4082483 qr.Q(y)%*%qr.R(y) ,1 ,2 ,3 1, 1 2 3 2

15、, 4 5 6 3, 7 8 9,數(shù)據(jù)框(data.frame),數(shù)據(jù)框是S中類(lèi)似SAS數(shù)據(jù)集的一種數(shù)據(jù)結(jié)構(gòu)。它通常是矩陣形式的數(shù)據(jù),但矩陣各列可以是不同類(lèi)型的。數(shù)據(jù)框每列是一個(gè)變量,每行是一個(gè)觀(guān)測(cè)。 數(shù)據(jù)框有更一般的定義。它是一種特殊的列表對(duì)象,有一個(gè)值為“data.frame”的class 屬性,各列表成員必須是向量(數(shù)值型、字符型、邏輯型)、因子、數(shù)值型矩陣、列表,或其它數(shù)據(jù)框。向量、因子成員為數(shù)據(jù)框提供一個(gè)變量,如果向量非數(shù)值型則會(huì)被強(qiáng)制轉(zhuǎn)換為因子,而矩陣、列表、數(shù)據(jù)框這樣的成員為新數(shù)據(jù)框提供了和其列數(shù)、成員數(shù)、變量數(shù)相同個(gè)數(shù)的變量。作為數(shù)據(jù)框變量的向量、因子或矩陣必須具有相同的長(zhǎng)度(

16、行數(shù))。 盡管如此,我們一般還是可以把數(shù)據(jù)框看作是一種推廣了的矩陣,它可以用矩陣形式顯示,可以用對(duì)矩陣的下標(biāo)引用方法來(lái)引用其元素或子集。,數(shù)據(jù)框生成,數(shù)據(jù)框可以用data.frame()函數(shù)生成,其用法與list()函數(shù)相同,各自變量變成數(shù)據(jù)框的成分,自變量可以命名,成為變量名。例如: d=data.frame(name=c(趙, 錢(qián), 孫, 李, 王),age=c(20,21,22,21,20),height= c(170,171,175,165,181),gender=c(男, 女, 男, 女, 男 ) d 如果一個(gè)列表的各個(gè)成分滿(mǎn)足數(shù)據(jù)框成分的要求,它可以用as.data.frame()

17、函數(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è)變量名(如X1,X2)。, d name age height gender 1 趙 20 170 男 2 錢(qián) 21 171 女 3 孫 22 175 男 4 李 21 165 女 5 王 20 181 男 d1 name 1 趙 2 錢(qián) 3 孫 4 李 5 王, d1 1 趙 錢(qián) 孫 李 王 Levels: 李 錢(qián) 孫 王 趙 d22:3 1 21 22,數(shù)

18、據(jù)框引用,引用數(shù)據(jù)框元素的方法與引用矩陣元素的方法相同,可以使用下標(biāo)或下標(biāo)向量,也可以使用名字或名字向量。如d1:2, 2:3。數(shù)據(jù)框的各變量也可以用按列表引用(即用雙括號(hào) 或$符號(hào)引用)。 數(shù)據(jù)框的變量名由屬性names定義,此屬性一定是非空的。數(shù)據(jù)框的各行也可以定義名字,可以用rownames屬性定義。如: names(d) 1 name age height gender rownames(d) 1 1 2 3 4 5, table(d4) 男 女 3 2 table(d4) 男 女 3 2 tapply(d3,d4, mean) 男 女 175.3333 168.0000 tapply

19、(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,attach()函數(shù),數(shù)據(jù)框的主要用途是保存統(tǒng)計(jì)建模需要的數(shù)據(jù)。S的統(tǒng)計(jì)建模功能都需要以數(shù)據(jù)框?yàn)檩斎霐?shù)據(jù)。我們也可以把數(shù)據(jù)框當(dāng)成一種矩陣來(lái)處理。 在使用數(shù)據(jù)框的變量時(shí)可以用“數(shù)據(jù)框名$變量名”的記法。但是,這樣使用較麻煩,S提供了attach()函數(shù)可以把數(shù)據(jù)框“連接”入當(dāng)前的名字空間。例如, attach(d) r d$r - height / age這樣的格式。 為了取消連接,只要調(diào)用d

20、etach()(無(wú)參數(shù)即可)。,注意:S和R中名字空間的管理是比較獨(dú)特的。它在運(yùn)行時(shí)保持一個(gè)變量搜索路徑表,在讀取某個(gè)變量時(shí)到這個(gè)變量搜索路徑表中由前向后查找,找到最前的一個(gè);在賦值時(shí)總是在位置1賦值(除非特別指定在其它位置賦值)。 attach()的缺省位置是在變量搜索路徑表的位置2 ,detach()缺省也是去掉位置2。 所以,S編程的一個(gè)常見(jiàn)問(wèn)題是當(dāng)你誤用了一個(gè)自己并沒(méi)有賦值的變量時(shí)有可能不出錯(cuò),因?yàn)檫@個(gè)變量已在搜索路徑中某個(gè)位置有定義,這樣不利于程序的調(diào)試,需要留心。 attach()既可以連接數(shù)據(jù)框,也可以連接列表。,輸入輸出,輸出 在S交互運(yùn)行時(shí)要顯示某一個(gè)對(duì)象的值只要鍵入其名字即

21、可 這實(shí)際上是調(diào)用了print()函數(shù),即print(x)。在非交互運(yùn)行(程序)中應(yīng)使用print()來(lái)輸出。print()函數(shù)可以帶一個(gè)digits=參數(shù)指定每個(gè)數(shù)輸出的有效數(shù)字位數(shù),可以帶一個(gè)quote= 參數(shù)指定字符串輸出時(shí)是否帶兩邊的撇號(hào),可以帶一個(gè)print.gap=參數(shù)指定矩陣或數(shù)組輸出時(shí)列之間的間距。 print()函數(shù)是一個(gè)通用函數(shù),即它對(duì)不同的自變量有不同的反應(yīng)。對(duì)各種特殊對(duì)象如數(shù)組、模型結(jié)果等都可以規(guī)定print的輸出格式。,cat()函數(shù)也用來(lái)輸出,但它可以把多個(gè)參數(shù)連接起來(lái)再輸出(具有paste()的功能)。例如: cat(i = , i, n) 注意使用cat()時(shí)要

22、自己加上換行符“n”。它把各項(xiàng)轉(zhuǎn)換成字符串,中間隔以空格連接起來(lái),然后顯示。 如果要使用自定義的分隔符,可以用sep=參數(shù),例如: cat(c(AB, C), c(E, F), n, sep=) ABCEF cat()還可以指定一個(gè)參數(shù)file=給一個(gè)文件名,可以把結(jié)果寫(xiě)到指定的文件中,如: cat(i = , 1, n, file=c:/work/result.txt),如果指定的文件已經(jīng)存在則原來(lái)內(nèi)容被覆蓋。加上一個(gè)append=TRUE參數(shù)可以不覆蓋原文件而是在文件末尾附加,這很適用于運(yùn)行中的結(jié)果記錄。 cat()函數(shù)和print()都不具有很強(qiáng)的自定義格式功能,為此可以使用cat()與

23、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)參見(jiàn)幫助。 R中目前format() 函數(shù)功能仍較弱,但R有一個(gè)formatC函數(shù)可以提供類(lèi)似C語(yǔ)言的printf格式功能。formatC對(duì)輸入向量的每一個(gè)元素單獨(dú)進(jìn)行格式轉(zhuǎn)換而不生成統(tǒng)一格式,例如: formatC(c(1, 10000) 1 1 1e+004,在formatC()函數(shù)中可以用format=參數(shù)指定C格式類(lèi)型,如“d

24、”(整數(shù)),“f”(定點(diǎn)實(shí)數(shù)),“e”(科學(xué)記數(shù)法),“E”, “g”(選擇位數(shù)較少的輸出格式),“G”, “fg”(定點(diǎn)實(shí)數(shù)但用digits 指定有效位數(shù)),“s”(字符串)。 可以用width指定輸出寬度,用digits指定有效位數(shù)(格式為e,E,g,G,fg時(shí))或小數(shù)點(diǎn)后位數(shù)(格式為f)時(shí)。可以用flag參數(shù)指定一個(gè)輸出選項(xiàng)字符串,字符串中有-表示輸出左對(duì)齊,有0表示左空白用0填充,有+表示要輸出正負(fù)號(hào),等等。例如,我們有一個(gè)矩陣da中保存了三個(gè)日期的年、月、日: da ,1 ,2 ,3 1, 99 1 3 2, 96 11 9 3, 65 5 18,為了輸出這三個(gè)日期,可以用apply

25、函數(shù)指定對(duì)每一行作用一個(gè)輸出函數(shù),此輸出函數(shù)利用cat()和formatC來(lái)控制: apply(da, 1, function(r) cat(formatC(r1, format=d, width=2, flag=0), -, formatC(r2, format=d, width=2, flag=0), -, formatC(r3, format=d, width=2, flag=0), n, sep=) 99-01-03 96-11-09 65-05-18 NULL 這里我們知道apply函數(shù)第一個(gè)參數(shù)指定了一個(gè)矩陣,第二個(gè)參數(shù)說(shuō)明對(duì)行操作還是對(duì)列操作,第三個(gè)參數(shù)是一個(gè)函數(shù),這里我們使用了

26、直接定義一個(gè)函數(shù)作為參數(shù)的辦法。輸出結(jié)果中多了一個(gè)NULL函數(shù),這是因?yàn)槲覀冊(cè)诮换ミ\(yùn)行,apply的結(jié)果作為一個(gè)表達(dá)式的值(NULL )會(huì)被顯示出來(lái)。 為避免顯示,可以把結(jié)果賦給一個(gè)臨時(shí)變量名,或者把整個(gè)表達(dá)式作為invisible() 函數(shù)的參數(shù),這時(shí)不顯示表達(dá)式值。,S的輸出缺省顯示在交互窗口。可以用sink()函數(shù)指定一個(gè)文件以把后續(xù)的輸出轉(zhuǎn)向到這個(gè)文件,并可用append參數(shù)指定是否要在文件末尾附加: sink(“E:/work/result.txt, append=TRUE) ls() d sink() 調(diào)用無(wú)參數(shù)的sink()把輸出恢復(fù)到交互窗口。,Write(t(x),file=

27、文件名,nol=nol(x)把一個(gè)矩陣X輸出到文件中,把X轉(zhuǎn)置后輸出因?yàn)镽中矩陣是列優(yōu)先的,如果不轉(zhuǎn)置則輸出是按列輸出的。如果不指定列數(shù)則缺省使用5列。文件名缺省用data. Write.table(x,file=文件名)把數(shù)據(jù)框X輸出到文件中,輸出包括變量名表頭和行名。,輸入,為了從外部文件讀入一個(gè)數(shù)值型向量,S提供了scan()函數(shù)。如果指定了file參數(shù)(也是第一參數(shù)),則從指定文件讀入,缺省情況下讀入一個(gè)數(shù)值向量,文件中各數(shù)據(jù)以空白分隔,讀到文件尾為止。例如: cat(1:12, n, file=E:/work/result.txt) x y - matrix(scan(E:/work

28、/result.txt), ncol=3, byrow=T),實(shí)際上,scan()也能夠讀入一個(gè)多列的表格,只要用what參數(shù)指定一個(gè)列表,則列表每項(xiàng)的類(lèi)型為需要讀取的類(lèi)型。用skip參數(shù)可以跳過(guò)文件的開(kāi)始若干行不讀。用sep參數(shù)可以指定數(shù)據(jù)間的分隔符。詳見(jiàn)幫助。 scan()不指定讀取文件名時(shí)是交互讀入,讀入時(shí)用一個(gè)空行結(jié)束。 如果要讀取一個(gè)數(shù)據(jù)框,S提供了一個(gè)read.table()函數(shù)。它只要給出一個(gè)文件名,就可以把文件中用空白分隔的表格數(shù)據(jù)每行讀入為數(shù)據(jù)框的一行。比如,文件E:d.txt 中內(nèi)容如下: Zhou 15 3 “Li Ming” 9 李明 Zhang 10.2 Wang,用

29、read.table讀入: x x V1 V2 V3 1 Zhou 15 3 2 Li Ming 9 李明 3 Zhang 10.2 Wang 讀入結(jié)果為數(shù)據(jù)框。 函數(shù)可以自動(dòng)識(shí)別表列是數(shù)值型還是字符型,并在缺省情況下把字符型數(shù)據(jù)轉(zhuǎn)換為因子(加上as.is=T可以保留字符型不轉(zhuǎn)換)。 函數(shù)自動(dòng)為數(shù)據(jù)框變量指定“V1 ”、“V2”這樣的變量名,指定“1”、“2”這樣的行名??梢杂胹參數(shù)指定一個(gè)字符型向量作為數(shù)據(jù)框的變量名,用s參數(shù)指定一個(gè)字符型向量作為數(shù)據(jù)框的行名。,read.table()可以讀入帶有表頭的文件,只要加上header=TRUE參數(shù)即可??梢杂胹e

30、p 參數(shù)指定表行各項(xiàng)的分隔符。例如,為了讀入如下帶有表頭的逗號(hào)分隔文件E:d.csv: Name,score, cn Zhou,15,3 Li Ming, 9, 李明 Zhang, 10.2, Wang 使用如下語(yǔ)句: x=read.table(E:/d.csv, header=T, sep=,) x Name score cn 1 Zhou 15.0 3 2 Li Ming 9.0 李明 3 Zhang 10.2 Wang 其它一些用法見(jiàn)幫助。,cl =read.table(E:/R/class.txt, as.is=c(1), s=c(Name, Sex, Age, Hei

31、ght, Weight); cat(names(cl),names(cl); class.data=read.table(E:/R/class.csv,header=T,sep=,); cat(names(class.data),names(class.data); Edata = read.table(E:/R/Employee data.csv,header=T,sep=,) cat(names(Edata),names(Edata);,read.spss package:foreign R Documentation Read an SPSS data file Description:

32、 read.spss reads a file stored by the SPSS save and export commands and returns a list. Usage: read.spss(file, use.value.labels=TRUE, to.data.frame=FALSE, max.value.labels=Inf, s=FALSE) Arguments: file: character variable with the name of the file to read. use.value.labels: Convert v

33、ariables with value labels into R factors with those levels? to.data.frame: return a data frame? max.value.labels: Only variables with at most this many unique values will be converted to factors s: Trim trailing spaces from factor levels?,Details: This uses modified code from the PS

34、PP project for reading the SPSS formats. Occasionally in SPSS value labels will be added to some values of a continuous variable (eg to distinguish different types of missing data), and you will not want these variables converted to factors. By setting max.val.labels you can specify that variables with a large number of distinct values are not converted to factors even if they have value labels. In addition, variables will not be converted to factors if there are non-missing values that have no value label. The value labels are then returned in the value.labels attribute of the variable. If

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論