1. R語言之創建數據集
R語言之創建數據集
數據集通常是由數據構成的一個矩形數組,行表示觀測,列表示變數。
R中有許多用於存儲數據的結構,包括標量、向量、數組、數據框和列表。
在R中,對象(object)是指可以賦值給變數的任何事物,包括常量、數據結構、函數、甚至是圖形。因子(factor)是名義型變數或有序型變數,在R中被特殊地存儲和處理。
R中的數據結構:
1.1向量
向量是用於存儲數值型、字元型或邏輯型數據的一維數組。創建向量使用函數c(),如下例所示:
數值型向量:a<-c(1,2,5,3,6,-2,4)
字元型向量:b<-c("one","two","three")
邏輯型向量:c<-c(TRUE,TRUE,TRUE,FALSE,TRUE)
註:單個向量中的數據必須擁有相同的類型或模式。
標量是只含一個元素的向量,例如f<-3、g<-"US"和h<-TRUE。它們用於保存常量。
訪問向量中的元素,可在方括弧中給定元素所處位置的數值,如:a[c(2,4)]用於訪問向量a中的第二個和第四個元 素。
1.2矩陣
矩陣是一個二維數組,只是每個元素都擁有相同的模式(數值型、字元型或邏輯型),可以通過matrix創建矩陣
一般使用格式為:
mymatrix<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logical_value,dimnames=list(
char_vector_rownames,char_vector_colnames)) ,其中vector包含了矩陣的元素,nrow和ncol用以指定
行和列的維數,dimnames包含了可選的以字元型向量表示的行名和列名。選項byrow則表明矩陣應當按行
填充(byrow=TRUE)還是按列填充(byrow=FALSE),默認情況下按列填充。代碼演示如下:
[plain] view plain
> cells<-c(1,23,56,485)
> rnames<-c("R1","R2")
> cnames<-c("c1","c2")
[plain] view plain
<pre name="code" class="html">> mymatrix<-matrix(cells ,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
> mymatrix
c1 c2
R1 1 23
R2 56 485
1.3數組
數組與矩陣類似,但是維數可以大於2。數組可通過array函數創建,形式如下:
myarray<-array(vector,dimensions,dimnames),其中vector包含了數組中的數據,dimensions是一個數值型向量,給出了各個維度下標的最大值,而dimnames是可選的、各維度名稱標簽的列表。代碼如下:
[html] view plain
> dim<-c("A1","A2")
> dim1<-c("A1","A2")
> dim2<-c("B1","B2","B3")
> dim3<-c("C1","C2","C3","C4")
> z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
> z
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
1.4數據框
數據框中不同的列可以包含不同模式(數值型、字元型等)的數據,是R中最常處理的數據結構。數據框可以通過函數data.frame()創建:mydata<-data.frame(col1,col2,col3,...),其中的列向量col1,col2,col3,...可為任何類型(如字元型、數值型或邏輯型)。每一列的名稱可由函數names指定。代碼如下:
[html] view plain
> age<-c(25,34,28,53)
> patientID<-c(1,2,3,4)
> diabetes<-c("Type1","Type2","Type1","Type1")
> status<-c("Poor","Improved","Excellent","Poor")
> patientdata<-data.frame(patientID,age,diabetes,status)
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 53 Type1 Poor
> patientdata$age
[1] 25 34 28 53
<pre name="code" class="html">> table(patientdata$diabetes,patientdata$status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
$被用來選取一個給定數據框中的某個特定變數,上面table(patientdata$diabetes,patientdata$status)生成了 diabetes和status的列聯表。
函數attach()可將數據框添加到R的搜索路徑中。
函數detach()將數據框從搜素路徑中移除。
相對於attach。多數的R書籍更推薦使用函數with()。
1.5因子
變數可歸結為名義型、有序型或連續型變數。類別(名義型)變數和有序類別(有序型)變數在R中稱為因子。因子在R中非常重要,因為它決定了數據的分析方式以及如何進行視覺呈現。
函數factor()以一個整數向量的形式存儲類別值,整數的取值范圍是[1...k](其中k是名義變數中唯一值得個數),同時一個由字元串(原始值)組成的內部向量將映射到這些整數上。
名義型eg:假設有向量:diabetes<-c("Type1","Type2","Type1","Type1")
語句diabetes<-factor(diabetes)將此向量存儲為(1,2,1,1).
有序型eg: 對於給定變數status<-c("Poor","Improved","Excellent","Poor")
語句status<-factor(status,ordered=TRUE)會將向量編碼為(3,2,1,3)。
1.6列表(list)
列表是R的數據類型中最為復雜的一種。列表就是一些對象的(或成分,component)的有序集合。列表允許你整合若干(可能無關)的對象到單個對象名下。例如,某個列表中可能是若干向量、矩陣、數據框,甚至是其他列表的組合。可以使用函數list()創建列表:
mylist<-list(object1,object2,...)
註:列表成為了R中的重要數據結構。
1.列表允許以一種簡單的方式組織和重新調用不相乾的信息;
2.許多R函數的運行結果都是以列表的形式返回的。