統計分析中一個完整的數據集通常是由若干個變量的若干個觀測值組成的, 在R中稱為數據框. 數據框是一個對像, 它與前面講的矩陣與二維數組形式上是類似的, 也是二維的,也有維數這個屬性, 且各個變量的觀測值有相同的長度. 但不同的是: 在數據框中, 行與列的意義是不同的, 其中的列表示變量,而行表示觀測. 顯示數據框時左側會顯示觀測值的序號.
數據框的建立分為直接的與簡接的兩種方法:
數據框的直接建立
若你在R中建立了一些向量并試圖想由它們生成數據框,則可以使用函數data.frame( ). 例如
> x=c(42,7,64,9)
> y=1:4
> z.df=data.frame(INDEX = y, VALUE = x)
INDEX VALUE
1 1 42
2 2 7
3 3 64
4 4 9
數據框中的向量必須有相同的長度或長度有倍數關系,如果其中有一個比其它的短,它將按循環法則“循環”整數次. 例如
> weight <- c(70.6, 56.4, 80, 59.5)
> x <- (c("adult", "teen", "adult", "teen"))
> wag <- data.frame(weight, age = x)
> wag
weight age
1 70.6 adult
2 56.4 teen
3 80.0 adult
4 59.5 teen
> x <- 1:4; y <- 2:4
> data.frame(x, y)
錯誤于data.frame(x, y) : 變元值意味著不同的行數 4, 3
數據框的簡接建立
一個數據框還可以通過數據文件(文本文件、EXCEL文件或其它統計軟件的數據文件)讀取并建立, 在此我們僅通過一個例子來說明如何通過函數read.table( ) 讀取文件c:\data\foo.txt中的觀測值, 并建立一個數據框.其它簡接方法可參考下一節“數據的存貯與讀取”的介紹. 已知存于foo.txt上的數據如下:
treat weight
A 3.4
B NA
A 5.8
則下面的命令建立了數據框foo.
> foo <- read.table(file = "c:/data/foo.txt", header = T)
> foo
treat weight
1 A 3.4
2 B NA
3 A 5.8
適用于數據框的函數
在上一小節中我們所討論的關于矩陣的統計計算函數max( ), min( ),median( ), var( ), sd( ), sum( ), cumsum( ), cumprod( ), cummax( ),cummin( ), cov( ), cor( )同樣適用于數據框, 意義也相同. 這里通過R內嵌的另一個數據集Puromycin來說明summary( )、pairs( )和xtable( )等的使用.
> attach(Puromycin) # 掛接數據集使之激活
> help(Puromycin) # 顯示前幾行
> summary(Puromycin) # 顯示主要的描述性統計量
conc rate state
Min. :0.0200 Min. : 47.0 treated :12
1st Qu.:0.0600 1st Qu.: 91.5 untreated:11
Median :0.1100 Median :124.0
Mean :0.3122 Mean :126.8
3rd Qu.:0.5600 3rd Qu.:158.5
Max. :1.1000 Max. :207.0
從summary可以看出, 變量conc和rate是數值型的, 而state為因子變量. 變量之間的關系可以通過成對數據散點圖考查:
> pairs(Puromycin, panel = panel.smooth)
最后使用xtabs( )函數由交叉分類因子產生一個列聯表:
> xtabs(~state + conc, data = Puromycin)
conc
state 0.02 0.06 0.11 0.22 0.56 1
treated 2 2 2 2 2 2
untreated 2 2 2 2 2 1
下期請期待數據框的下標與子集的提取








暫無數據