R Cheat Sheet (12): Looking at Data
当拿到一个新的数据集时,首先要做的是检查一下数据,数据的格式是怎样的?有几个维度?有哪些变量?变量是如何存储的?有哪些丢失的数据?数据中是否有瑕疵?本节主要内容是使用R的内建函数解答以上问题。
本节中使用的数据集来自United States Department of Agriculture’s PLANTS Database (http://plants.usda.gov/adv_search.html)。
读入plants,检查其类型:
> class(plants) [1] "data.frame"
检查其维度尺寸:
> dim(plants) [1] 5166 10
其中5166为行数(观测),10为列数(变量)。也可以使用nrow() 和ncol() 来单独查看行列数量:
> nrow(plants) [1] 5166 > ncol(plants) [1] 10
使用object.size() 可以查看参数对象所占用的内存空间:
> object.size(plants) 644232 bytes
使用names() 可以查看数据集中各个变量的名称:
> names(plants) [1] "Scientific_Name" "Duration" [3] "Active_Growth_Period" "Foliage_Color" [5] "pH_Min" "pH_Max" [7] "Precip_Min" "Precip_Max" [9] "Shade_Tolerance" "Temp_Min_F"
下一步应当查看一下具体的数据。整个数据集包含5000条以上的观测结果,我们不可能把这些数据一次看完。head() 函数可以给出数据集的开头几行以供预览:
> head(plants) Scientific_Name Duration Active_Growth_Period Foliage_Color pH_Min pH_Max Precip_Min 1 Abelmoschus <NA> <NA> <NA> NA NA NA 2 Abelmoschus esculentus Annual, Perennial <NA> <NA> NA NA NA 3 Abies <NA> <NA> <NA> NA NA NA 4 Abies balsamea Perennial Spring and Summer Green 4 6 13 5 Abies balsamea var. balsamea Perennial <NA> <NA> NA NA NA 6 Abutilon <NA> <NA> <NA> NA NA NA Precip_Max Shade_Tolerance Temp_Min_F 1 NA <NA> NA 2 NA <NA> NA 3 NA <NA> NA 4 60 Tolerant -43 5 NA <NA> NA 6 NA <NA> NA
head() 函数默认给出前6行数据,但也可以通过参数指定显示的行数,如使用head(plants, 10) 可以得到前10行数据。
与 head() 相对,tail() 函数可以显示数据集的末尾几行:
> tail(plants, 7) Scientific_Name Duration Active_Growth_Period Foliage_Color pH_Min pH_Max Precip_Min Precip_Max 5160 Zizia aptera Perennial <NA> <NA> NA NA NA NA 5161 Zizia aurea Perennial <NA> <NA> NA NA NA NA 5162 Zizia trifoliata Perennial <NA> <NA> NA NA NA NA 5163 Zostera <NA> <NA> <NA> NA NA NA NA 5164 Zostera marina Perennial <NA> <NA> NA NA NA NA 5165 Zoysia <NA> <NA> <NA> NA NA NA NA 5166 Zoysia japonica Perennial <NA> <NA> NA NA NA NA Shade_Tolerance Temp_Min_F 5160 <NA> NA 5161 <NA> NA 5162 <NA> NA 5163 <NA> NA 5164 <NA> NA 5165 <NA> NA 5166 <NA> NA
使用summary() 可以得到数据集的概要信息:
> summary(plants) Scientific_Name Duration Active_Growth_Period Abelmoschus : 1 Perennial :3031 Spring and Summer : 447 Abelmoschus esculentus : 1 Annual : 682 Spring : 144 Abies : 1 Annual, Perennial: 179 Spring, Summer, Fall: 95 Abies balsamea : 1 Annual, Biennial : 95 Summer : 92 Abies balsamea var. balsamea: 1 Biennial : 57 Summer and Fall : 24 Abutilon : 1 (Other) : 92 (Other) : 30 (Other) :5160 NA's :1030 NA's :4334 Foliage_Color pH_Min pH_Max Precip_Min Precip_Max Shade_Tolerance Dark Green : 82 Min. :3.000 Min. : 5.100 Min. : 4.00 Min. : 16.00 Intermediate: 242 Gray-Green : 25 1st Qu.:4.500 1st Qu.: 7.000 1st Qu.:16.75 1st Qu.: 55.00 Intolerant : 349 Green : 692 Median :5.000 Median : 7.300 Median :28.00 Median : 60.00 Tolerant : 246 Red : 4 Mean :4.997 Mean : 7.344 Mean :25.57 Mean : 58.73 NA's :4329 White-Gray : 9 3rd Qu.:5.500 3rd Qu.: 7.800 3rd Qu.:32.00 3rd Qu.: 60.00 Yellow-Green: 20 Max. :7.000 Max. :10.000 Max. :60.00 Max. :200.00 NA's :4334 NA's :4327 NA's :4327 NA's :4338 NA's :4338 Temp_Min_F Min. :-79.00 1st Qu.:-38.00 Median :-33.00 Mean :-22.53 3rd Qu.:-18.00 Max. : 52.00 NA's :4328
对于不同的数据类型,summary() 会给出不同的结果。如对于Precip_Min 这样的数值型变量,summary() 给出了Min.(minimum)、1st Qu(1st quartile)、Median、Mean、3rd Qu(3rd Qu)和Max.(maximum)几项,便于我们了解数据的分布。对于factor,summary() 给出了每一种值出现的次数,如Scientific_Name 的每一种值均只出现了一次,因为科学名称其对于每一种特定植物是唯一的。注意有些变量的summary被截断了,因为它们太长了,未显示的数据都被放在(Other) 里面。
使用table() 可以查看某一变量的各种取值都出现了多少次:
> table(plants$Active_Growth_Period) Fall, Winter and Spring Spring Spring and Fall Spring and Summer 15 144 10 447 Spring, Summer, Fall Summer Summer and Fall Year Round 95 92 24 5
str() 可能是查看数据集最有用和简明的方法了,它能够以简明可读的形式,给出数据集的诸多特征:
> str(plants) 'data.frame': 5166 obs. of 10 variables: $ Scientific_Name : Factor w/ 5166 levels "Abelmoschus",..: 1 2 3 4 5 6 7 8 9 10 ... $ Duration : Factor w/ 8 levels "Annual","Annual, Biennial",..: NA 4 NA 7 7 NA 1 NA 7 7 ... $ Active_Growth_Period: Factor w/ 8 levels "Fall, Winter and Spring",..: NA NA NA 4 NA NA NA NA 4 NA ... $ Foliage_Color : Factor w/ 6 levels "Dark Green","Gray-Green",..: NA NA NA 3 NA NA NA NA 3 NA ... $ pH_Min : num NA NA NA 4 NA NA NA NA 7 NA ... $ pH_Max : num NA NA NA 6 NA NA NA NA 8.5 NA ... $ Precip_Min : int NA NA NA 13 NA NA NA NA 4 NA ... $ Precip_Max : int NA NA NA 60 NA NA NA NA 20 NA ... $ Shade_Tolerance : Factor w/ 3 levels "Intermediate",..: NA NA NA 3 NA NA NA NA 2 NA ... $ Temp_Min_F : int NA NA NA -43 NA NA NA NA -13 NA ...