R語言實戰(zhàn) | 新手福利~認識數(shù)據(jù)集的內(nèi)在

"R實戰(zhàn)"專題·第4篇

編輯 | 科白君

本期推送內(nèi)容

按個人的要求來創(chuàng)建含有研究信息的數(shù)據(jù)集,這是任何數(shù)據(jù)分析的第一步碗殷。同時精绎,這也是學(xué)習(xí)R語言過程重要的入門環(huán)節(jié)。特別是初學(xué)過程锌妻,更多的是模仿學(xué)習(xí)代乃。由于不理解數(shù)據(jù)結(jié)構(gòu),導(dǎo)致無法正確模仿數(shù)據(jù)格式并無法正常運行代碼仿粹。因此搁吓,本期介紹R語言的基礎(chǔ)內(nèi)容:數(shù)據(jù)集概念數(shù)據(jù)結(jié)構(gòu)吭历、數(shù)據(jù)輸入導(dǎo)出堕仔。主要講解相應(yīng)內(nèi)容的R包及函數(shù)使用,希望大家學(xué)習(xí)后能解決以下問題:1)?數(shù)據(jù)集有哪些類型的變量組成晌区;2)?清楚數(shù)據(jù)集的數(shù)據(jù)結(jié)構(gòu)摩骨;3)?讀取各類型文件的數(shù)據(jù);4)?成功導(dǎo)出所需要的數(shù)據(jù)朗若。

想學(xué)習(xí)R語言的朋友可以持續(xù)關(guān)注微信公眾號:科白君的土壤世界


一恼五、數(shù)據(jù)集的概念

數(shù)據(jù)集通常是由數(shù)據(jù)構(gòu)成的一個矩形數(shù)組,行表示觀測哭懈,列表示變量灾馒。在R中,數(shù)據(jù)集包括以下兩步:1)選擇一種數(shù)據(jù)結(jié)構(gòu)來儲存數(shù)據(jù)银伟;2)將數(shù)據(jù)輸入或?qū)氲竭@個數(shù)據(jù)結(jié)構(gòu)中你虹。另外,R主要可處理的數(shù)據(jù)類型包括數(shù)值型彤避、字符型傅物、邏輯型(TRUE or FALSE)、復(fù)數(shù)型(虛數(shù))和原生型(字節(jié))琉预。

二董饰、數(shù)據(jù)結(jié)構(gòu)的類型

R擁有許多用于存儲數(shù)據(jù)的對象類型,包括標量圆米、向量卒暂、矩陣、數(shù)組娄帖、數(shù)據(jù)框和列表也祠。它們在儲存數(shù)據(jù)的類型創(chuàng)建方式近速、結(jié)構(gòu)復(fù)雜度诈嘿,及定位和訪問其中某元素的方法等均有所差異堪旧。接下來一一介紹。

1)標量

與C語言不同奖亚,R語言中淳梦,單個數(shù)據(jù)(標量)沒有單獨的數(shù)據(jù)類型,它只是向量的一種特例昔字,標量以單元素向量的形式出現(xiàn)爆袍。標量是只含一個元素的向量,例如f <- 3作郭、g <- "US"和h <- TRUE陨囊。它們用于保存常量。因此夹攒,R中最基本的數(shù)據(jù)類型是向量谆扎。

2)向量

向量是用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組芹助。執(zhí)行組合功能的函數(shù)c()可用來創(chuàng)建向量。例如:

我們可以使用a[c(2, 4)]訪問向量a中的第二個和第四個元素闲先。此外状土,我們具體看下面例子:

3)矩陣

矩陣是一個二維數(shù)組,只是每個元素都擁有相同的數(shù)據(jù)類型(同上三種)伺糠∶晌剑可用函數(shù)matrix()創(chuàng)建矩陣。

我們可以使用下標和方括號來選擇矩陣中的行训桶、列或元素累驮。x[i, ]指矩陣中x中的第i行,x[i, j]指第i行第j個元素舵揭。選擇多行或多列時谤专,下標i和j可為數(shù)值型向量。For example:

4)數(shù)組

數(shù)組(array)與矩陣類似午绳,但緯度可以大于2置侍。數(shù)組可以用array函數(shù)構(gòu)建,例如:

### vector包含數(shù)組中的數(shù)據(jù)拦焚,dimen.是數(shù)值型向量蜡坊,給出各維度下標的最大值,而dimnames是可選的赎败、各維度名稱標簽的列表秕衙。

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

由于不同的列包含不同類型的數(shù)據(jù),數(shù)據(jù)框的概念較矩陣來說更一般僵刮。通常數(shù)據(jù)框是R中最常處理的數(shù)據(jù)結(jié)構(gòu)据忘。數(shù)據(jù)框可通過函數(shù)data.frame()創(chuàng)建:

具體例子:

關(guān)于選取數(shù)據(jù)框中的元素的方式有很多種鹦牛,我們可以使用矩陣中的方括號標記法,也可直接指定列名:

6)因子

類別(名義型)變量和有序類別(有序型)變量在R中稱為因子(factor)若河。因子在R中非常重要能岩,因為它決定了數(shù)據(jù)的分析方式以及如何進行視覺呈現(xiàn)。例如:

7)列表

列表(list)是R的數(shù)據(jù)類型中最為復(fù)雜的一種萧福。通常拉鹃,列表就是一些對象或成分的有序集合。列表允許你整合若干對象到單個對象名下鲫忍。例如膏燕,某個列表中可能包含若干向量、矩陣悟民、數(shù)據(jù)框坝辫,甚至其他列表的組合∩淇鳎可用list()函數(shù)構(gòu)建列表:

具體例子:

提取數(shù)據(jù):

三近忙、數(shù)據(jù)的輸入

使用R進行數(shù)據(jù)分析的時候,首先要導(dǎo)入數(shù)據(jù)智润。R語言支持的數(shù)據(jù)類型很多及舍,包括、excel文件窟绷,csv文件锯玛,txt文件等。很多人初學(xué)者甚至還沒開始就已經(jīng)對R語言放棄了兼蜈,正是倒在了數(shù)據(jù)導(dǎo)入這一步攘残。下面給大家提供幾種常見的數(shù)據(jù)導(dǎo)入方法。

1)使用鍵盤手動輸入數(shù)據(jù)

有兩種常見的方式:用R內(nèi)置的文本編輯器和直接在代碼中導(dǎo)入數(shù)據(jù)为狸。首先歼郭,利用文本編譯器。

R中的函數(shù)edit()自動調(diào)用一個手動輸入數(shù)據(jù)的文本編譯器辐棒。步驟如下:

①創(chuàng)建一個空的數(shù)據(jù)框/矩陣实撒,其中變量名和變量的類型需與理想中的最終數(shù)據(jù)集一致;

②針對這個數(shù)據(jù)對象調(diào)用文本編譯器涉瘾,輸入數(shù)據(jù)知态,并將結(jié)果保存回此數(shù)據(jù)對象。

例子:先創(chuàng)建一個名為data的數(shù)據(jù)框立叛,含有三個變量:數(shù)值型负敏,字符型和數(shù)值型。然后使用文本編譯器秘蛇,鍵入數(shù)據(jù)其做,最后保存結(jié)果顶考。

通過edit()函數(shù)調(diào)用出數(shù)據(jù)編輯器,如下圖

R軟件彈出數(shù)據(jù)編輯器后妖泄,我們就可以點擊第四列格子進行變量的定義驹沿。例如這里點擊"var4"后,就會彈出一個編輯器蹈胡,這里我們就可以對變量的變量名和類型(數(shù)值渊季,字符)進行定義。

定義好變量后罚渐,可以進行手動輸入數(shù)據(jù)却汉。不過這種方式只適合少量的數(shù)據(jù)輸入,當數(shù)據(jù)量比較大時荷并,建議使用其他的方式導(dǎo)入數(shù)據(jù)合砂。

此外,可以直接在程序中嵌入數(shù)據(jù)集源织,例如:

2)使用函數(shù)導(dǎo)入數(shù)據(jù)(主要以excel文件格式為主

①導(dǎo)入csv或txt文件翩伪,使用基礎(chǔ)的read.table()函數(shù)導(dǎo)入數(shù)據(jù)。另外谈息,也可以使用read.csv()函數(shù)幻工。該函數(shù)可以讀入一個表格格式的文件并保存為一個數(shù)據(jù)框±杈ィ基本的語法表達式:

主要的參數(shù)理解:

file:文件路徑(注意:Windows路徑要用斜杠 "?/ "?or雙反斜杠 " \\ ")。

header:默認為FALSE当悔,即數(shù)據(jù)框的列名默認系統(tǒng)自帶的V1傅瞻,V2...Vn,為TRUE時第一行作為每列的列名盲憎。

sep:分隔符嗅骄,默認為空格,可以設(shè)置為逗號(comma) sep=","饼疙,分號(semicolon) sep="?; "及制表符(tab)溺森。

row.names:是可選參數(shù),表示行標識符的變量窑眯。當row.names=1時表示第一列作為每一行的行名屏积,當row...=2時,表示第二列磅甩,數(shù)字表示某一列炊林。特別是,該參數(shù)使用的時候卷要,該列中不能存在重復(fù)名渣聚,否則報錯独榴。

具體:

②導(dǎo)入excel文件,需要用到R包library(xlsx)奕枝,可以直接導(dǎo)入Excel工作表棺榔。但是要確保第一次使用前先進行下載和安裝。同時也需要xlsxJars和rJava包還有openxlsx包隘道,及一個正常工作的Java安裝(http://java.com)症歇。優(yōu)勢:一個文件夾存儲多個sheet,數(shù)據(jù)讀取的時候不需要新建多個文件薄声。基本的語法表達式:

主要的參數(shù)理解:

file:文件路徑(注意:Windows路徑要用斜杠 "?/ "or雙反斜杠 " \\ ")当船。

sheet:n表示xlsx格式下,不同sheet的表格默辨。n=1表示讀取第一個sheet德频,以此類推。特別是缩幸,如果漏寫n會報錯壹置。

具體過程:

四、數(shù)據(jù)的導(dǎo)出

通常在分析時候表谊,我們需要用到計算后的結(jié)果钞护,需要把計算的結(jié)果導(dǎo)出。這里我們常用到的函數(shù)有write.table爆办,write.csv來導(dǎo)出txt难咕,csv格式的文件。另外距辆,write.xlsx用來導(dǎo)出xlsx格式的文件余佃。這里,我們選擇最基礎(chǔ)的write.table的語法表達式進行介紹跨算,剩下的導(dǎo)出方式建議大家用help()函數(shù)進行查閱或 ?函數(shù)名進行查閱:

x:需要導(dǎo)出的數(shù)據(jù)爆土,這里是指前面賦值過的數(shù)據(jù)。

file:導(dǎo)出的文件路徑诸蚕。

sep:分隔符步势,默認為空格(" "),也就是以空格為分割列背犯。

row.names:是否導(dǎo)出行序號坏瘩,默認為TRUE,也就是導(dǎo)出行序號漠魏。

col.names:是否導(dǎo)出列名桑腮,默認為TRUE,也就是導(dǎo)出列名蛉幸。

quote:字符串是否使用引號表示破讨,默認為TRUE丛晦,也就是使用引號表示。

例如:將數(shù)據(jù)框C輸出為.csv文件

Tips:

1. 單個向量中的數(shù)據(jù)必須擁有相同的類型或模式(數(shù)值型提陶、字符型或邏輯型)烫沙,同一向量中無法混雜不同類型的數(shù)據(jù)。

2. 矩陣都是二維的隙笆,與向量相似锌蓄,僅能包含一種數(shù)據(jù)類型。超過二維時撑柔,考慮使用數(shù)組瘸爽。當數(shù)據(jù)為多種類型時,可考慮使用數(shù)據(jù)框铅忿。

3. 另外剪决,在已經(jīng)構(gòu)建好的數(shù)據(jù)框里,除了通過edit()能夠編輯檀训,fix()函數(shù)也可以編輯數(shù)據(jù)框里的數(shù)值型和字符型變量柑潦。

4. write.table / read.table 既可以讀取txt文件也可以導(dǎo)入csv格式的文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峻凫,一起剝皮案震驚了整個濱河市渗鬼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荧琼,老刑警劉巖譬胎,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異命锄,居然都是意外死亡堰乔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門累舷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夹孔,你說我怎么就攤上這事被盈。” “怎么了搭伤?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵只怎,是天一觀的道長。 經(jīng)常有香客問我怜俐,道長身堡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任拍鲤,我火速辦了婚禮贴谎,結(jié)果婚禮上汞扎,老公的妹妹穿的比我還像新娘。我一直安慰自己擅这,他們只是感情好澈魄,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仲翎,像睡著了一般痹扇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溯香,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天鲫构,我揣著相機與錄音,去河邊找鬼玫坛。 笑死结笨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的昂秃。 我是一名探鬼主播禀梳,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肠骆!你這毒婦竟也來了算途?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蚀腿,失蹤者是張志新(化名)和其女友劉穎嘴瓤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莉钙,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡廓脆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了磁玉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片停忿。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚊伞,靈堂內(nèi)的尸體忽然破棺而出席赂,到底是詐尸還是另有隱情,我是刑警寧澤时迫,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布颅停,位于F島的核電站,受9級特大地震影響掠拳,放射性物質(zhì)發(fā)生泄漏癞揉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喊熟。 院中可真熱鬧柏肪,春花似錦、人聲如沸逊移。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胳泉。三九已至拐叉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扇商,已是汗流浹背凤瘦。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留案铺,地道東北人蔬芥。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像控汉,于是被迫代替她去往敵國和親笔诵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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