數據分析第二關之數據結構入門
一、 數據結構是什麼?有什麼作用?
通過如何蓋房子的故事類比了數據分析系統,形象清晰地了解數據結構。
二、數據結構基礎
2.1 向量
向量是用於存儲數值型、字元型或邏輯型數據的一維數組。
其中,a為數值型數據,b為字元型數據,c為邏輯型數據。值得注意的是:D向量中包含三種數據,而輸出顯示都歸於字元型數據。
特點:向量只能存儲相同類型的數據,無法混雜不同類型的數據。
而標量是只含有一個元素的向量,如:e <- 5, g <- 『six』。只能用於保存常量。
訪問向量中元素的方法:1)取一個元素
2)取多個不連續元素
3)取多個連續元素
注意:1)向量中元素序號從1開始,與python(list元素從0開始計數)不同。
2)取多個不連續元素時,不能簡單地填寫兩個元素序號(如上[1,3]),應該加上執行組合功能的函數從c()來表示(如上[c(1,3)])。
2.2 矩陣
矩陣是二維數組,存儲數據類型與向量相同,且同樣一個矩陣有且只能存儲一種數據類型。
1)創建矩陣方法
一般格式如下:
實例如下:
2)取矩陣中元素方法
I)取一個元素
II)取同一行或列中多個元素
III)取同一行或列
2.3 數組
數組維數大於2,儲存數據類型與向量、矩陣相同且同一數組中只有一種數據類型。
1)創建方法:
實例:
2)取值方法與矩陣類似
實例:
2.4 數據框
數據框屬於擴展版的矩陣,增添了不同列可以存儲不同類型的數據,前提是不同列仍是一個向量即同一列數據類型相同。
1) 創建方法:
實例如下:
2) 取值方法
3) 構成列聯表
實例:生成糖尿病類型變數diabetes和病情變數status的列聯表
精簡輸入變數名的方法:I)attach()和detach()聯用,用於鎖定數據框。
該方法適用範圍:分析一個單獨的數據框,並且不太可能有多個同名對象時使用。任何情況下,當心被告知某個對象已被屏蔽(masked)的警告。
II)with()方法
在用with()方法時,花括弧{ }的語句都是針對前面的數據框執行的(如上圖中的patientIDdate)。
該方法的局限性:賦值僅在此函數的括弧內生效。
應對局限性的方法:使用特殊賦值符<<-替代標準賦值符(<-)
2.5 因子
變數分為三種,依次為名義型、有序型和連續型變數。
其中,名義型變數是沒有順序之分的。如糖尿病類型diabetes(Type1、Type2)
有序型變數表示一種順序,並非數量關係。如病情status(Poor、Improved、Excellent)
連續型變數呈現某個範圍內的任意值,並同時表示了順序和數量。如年齡age
名義型變數和有序型變數在R中稱為因子(factor)。
函數factor()以一個整數向量的形式存儲類別值,同時一個由原始值組成的內部向量將映射到這些整數中。
I)對於名義型變數:
diabetes <-c(Type1,Type2,Type1,Type1)
語句diabetes <-factor(diabetes)將此向量存儲為(1,2,1,1),並在內部將其關聯為1=Type1和2=Type2(具體賦值根據字母順序而定)。
II)對於有序型變數,需要為函數factor()指定參數ordered=TRUE:
status <- c(Poor,Improved,Excellent,Poor)
語句status <- factor(status, ordered=TRUE)會將向量編碼為(3,2,1,3),並在內部關聯。
III)對於字元型向量,因子水平默認依字母順序創建,如果對順序不滿意時,可通過levels選項指定變數覆蓋默認排序。如status <- factor(status,ordered=TRUE,levels=c(『Poor』,』Improved』,』Excellent』),此時關聯關係為1=』Poor』,2=』Improved』,3=』Excellent』。
IV)對於數值型變數,可以用levels和labels參數來編碼成因子。如果男性被編碼成1,女性被編碼成2,語句如下:sex <- factor(sex, levels=c(1,2), labels=c(『Male』,』Female』),把變數轉換成一個無序因子。
因子使用如下:
2.6 列表
列表是R數據類型中最為複雜的一種,列表就是一些對象(或成分,component)的有序集合。允許你整合若干對象到單個對象名下。如某個列表中可能是若干向量、矩陣、數據框、甚至其他列表的組合。
使用函數list()創建列表:
Mylist <-list(object1,object2,…)
要加名字的話,通過name1=object1
即Mylist <- list(name1=object1,name2=object2,…)
列表如下:
推薦閱讀: