vlambda博客
学习文章列表

R语言学习10-查看数据

当我们处理一个新的数据集的时候,第一件事就是要对数据做一个了解。数据的格式是什么?数据的维度是多少?变量名是什么?变量如何存储?是否缺少数据?数据中是否有任何缺陷?

本次课将学习如何使用R的内置函数回答这些问题以及以及其他更多内容。我们将使用从美国农业部PLANTS数据库[1]构建的数据集。

尺寸和大小

假设我们已经把数据读取并存入一个名为plants的变量。我们输入ls()命令查看工作空间里的变量,应该已经存在名为plants的变量。

> ls()[1] "plants"

让我们从使用class(plants)检查plants变量的类型开始,这将为我们提供有关数据总体结构的线索。

> class(plants)[1] "data.frame"

将数据存在data frame里是非常普遍的情况。在R中使用read.csv()read.table()函数读取数据,默认的格式就是data frame

由于数据集存储在数据框中,因此我们知道它是矩形的。换句话说,它具有两个维度(行和列),很像一个电子表格。使用dim(plants)可以准确查看我们正在处理的行数和列数。

> dim(plants)[1] 5166 10

第一个数字5166是行数(观测值),第二个数字10是列数(变量)。

我们还可以使用nrow()ncol()分别来查看行数和列数。

> nrow(plants)[1] 5166
> ncol(plants)[1] 10

如果对数据集在内存中占用多少空间感到好奇,可以使用object.size(plants)

> object.size(plants)686080 bytes

内容

现在我们已经了解了数据集的尺寸和大小,让我们来了解一下其中的内容。names()函数可以返回数据集各列的列名。

> names(plants) [1] "Scientific_Name" "Duration" "Active_Growth_Period" "Foliage_Color" "pH_Min" "pH_Max"  [7] "Precip_Min" "Precip_Max" "Shade_Tolerance" "Temp_Min_F"

我们已经将相当描述性的变量名应用于此数据集,但情况并非总是如此。合理的下一步是查看实际数据。但是,我们的数据集包含5000多个观察值(行),因此一次查看全部内容是不切实际的。

使用head()函数可以查看数据集的头部一部分数据。

默认情况下,head()函数会列出前6行数据。如果我们想查看更多行的数据,可以在参数中设置。比如想查看前10行,使用head(plants, 10)即可。

同样,我们还可以是使用tail()函数查看数据集的尾部数据,用法和head()函数一样。

R语言学习10-查看数据

预览数据的顶部和底部之后,我们可能会看到很多NA,它们是R的缺失值占位符。使用summary()可以更好地了解每个变量的分布方式以及缺少的数据集数量。

summary()为每个变量提供不同的输出,具体取决于其类型。对于Precip_Min等数字数据,summary()显示最小值,第一四分位数,中位数,平均值,第三四分位数和最大值。这些值有助于我们了解数据的分布方式。

对于分类变量(在R中称为因子变量),summary()显示每个值(或级别)在数据中出现的次数。例如,Scientific_Name的每个值仅出现一次,因为它对于特定植物是唯一的。相反,持续时间的摘要(也是一个因子变量)告诉我们,我们的数据集包含3031个多年生植物,682个年生植物等。

您可以看到R通过使用other来代表Active_Growth_Period摘要中其他未显示的部分,我们可以用table(plants$Active_Growth_Period)来列出所有的值。

到目前为止,介绍的每个功能都可以帮助我们更好地了解数据结构。但是,这需要我们执行很多个函数,有没有更好的方式呢?答案就算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 ...

str()函数的优点在于,它以简洁易读的格式结合了我们已经看到的其他函数的许多功能。在最顶部,它告诉我们plants的类别是data.frame,它具有5166个观测值和10个变量。然后,它为我们提供了每个变量的名称和类以及其内容的预览。

str()实际上是一个非常通用的函数,可以在R中的大多数对象上使用。任何时候想要了解事物的结构(数据集,函数等),str()都是一个不错的起点。

小结

在本课程中,我们学习了如何使用一组简单而有用的函数来感受新数据集的结构和内容。花些时间提前进行此操作可以节省我们在分析工作中的时间和不必要的探索。

class:查看数据集类型dim:查看数据集尺寸object.size:查看数据集在内存中的大小names:查看列名head:查看头部数据tail:查看尾部数据summary:查看各列摘要str:查看数据整体概况

References

[1] PLANTS数据库: http://plants.usda.gov/adv_search.html