在 R 中导入常见数据类型
介绍
为了开始数据分析或建模项目,您首先需要获取数据并将其导入到您选择的工具中。
在本指南中,您将学习使用 R 中的基本函数来处理 JSON、CSV 和 XML 数据。这将使用来自运输统计局的数据来说明这些函数的用法。本指南假定您对 R 编程语言有基本的了解。如果您需要复习,可以观看有关使用 R 进行编程的课程。
导入 CSV 文件
逗号分隔值 (CSV) 是一种共享数据的常用格式,因为它简单易懂。通常,数据文件中的每一行代表一个新的观察结果。在每一行中,不同的属性用逗号分隔。
read.csv函数内置于utils包中。这意味着在 R 中读取 CSV 文件不需要第三方包。
在当前工作目录中创建以下data.csv 。
year,efficiency,sales
1980,24.3,8949000
1985,27.6,10979000
1990,28,9303000
1991,28.4,8185000
1992,27.9,8213000
1993,28.4,8518000
1994,28.3,8991000
1995,28.6,8620000
1996,28.5,8479000
1997,28.7,8217000
1998,28.8,8085000
1999,28.3,8638000
2000,28.5,8778000
2001,28.8,8352000
2002,29,8042000
2003,29.5,7556000
2004,29.5,7483000
2005,30.3,7660000
2006,30.1,7762000
2007,31.2,7562000
2008,31.5,6769000
2009,32.9,5402000
2010,33.9,5636000
2011,33.1,6093000
2012,35.3,7245000
2013,36.4,7586000
2014,36.5,7708000
2015,37.2,7517000
2016,37.7,6873000
2017,39.4,6081000
您可以从 R IDE 运行以下代码来导入它:
csv <- read.csv('data.csv', header = TRUE)
csv
typeof(csv)
输出:
> csv <- read.csv('data.csv', header = TRUE)
> csv
year efficiency sales
1 1980 24.3 8949000
2 1985 27.6 10979000
3 1990 28.0 9303000
4 1991 28.4 8185000
5 1992 27.9 8213000
6 1993 28.4 8518000
7 1994 28.3 8991000
8 1995 28.6 8620000
9 1996 28.5 8479000
10 1997 28.7 8217000
11 1998 28.8 8085000
12 1999 28.3 8638000
13 2000 28.5 8778000
14 2001 28.8 8352000
15 2002 29.0 8042000
16 2003 29.5 7556000
17 2004 29.5 7483000
18 2005 30.3 7660000
19 2006 30.1 7762000
20 2007 31.2 7562000
21 2008 31.5 6769000
22 2009 32.9 5402000
23 2010 33.9 5636000
24 2011 33.1 6093000
25 2012 35.3 7245000
26 2013 36.4 7586000
27 2014 36.5 7708000
28 2015 37.2 7517000
29 2016 37.7 6873000
30 2017 39.4 6081000
> typeof(csv)
[1] "list"
导入 JSON 数据
JSON 是另一种流行的数据共享格式。它允许分层数据类型,但比 CSV 更冗长。
要导入 JSON,请在工作目录中创建data.json文件:
{"year": 1980
R 中没有内置解析 JSON 的方法。但是,你可以安装jsonlite,这是一个用于在 R 数据类型和 JSON 之间进行转换的流行库。
下面的代码演示了如何安装此包并使用它将 JSON 文件导入到您的 R 环境中。
install.packages('jsonlite')
json <- jsonlite$fromJSON('data.json')
json
由于输入数据相同,因此输出将与 CSV 样本相同。
导入 XML 数据
另一种常见的数据格式是 XML。这种格式可能更冗长,因此文件大小更大。但是,如果您使用的是旧系统,它们可能会输出 XML,而您无法更改它。
创建以下 xml 文件data.xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element>
<efficiency>24.3</efficiency>
<sales>8949000</sales>
<year>1980</year>
</element>
<element>
<efficiency>27.6</efficiency>
<sales>10979000</sales>
<year>1985</year>
</element>
<element>
<efficiency>28</efficiency>
<sales>9303000</sales>
<year>1990</year>
</element>
<element>
<efficiency>28.4</efficiency>
<sales>8185000</sales>
<year>1991</year>
</element>
<element>
<efficiency>27.9</efficiency>
<sales>8213000</sales>
<year>1992</year>
</element>
<element>
<efficiency>28.4</efficiency>
<sales>8518000</sales>
<year>1993</year>
</element>
<element>
<efficiency>28.3</efficiency>
<sales>8991000</sales>
<year>1994</year>
</element>
<element>
<efficiency>28.6</efficiency>
<sales>8620000</sales>
<year>1995</year>
</element>
<element>
<efficiency>28.5</efficiency>
<sales>8479000</sales>
<year>1996</year>
</element>
<element>
<efficiency>28.7</efficiency>
<sales>8217000</sales>
<year>1997</year>
</element>
<element>
<efficiency>28.8</efficiency>
<sales>8085000</sales>
<year>1998</year>
</element>
<element>
<efficiency>28.3</efficiency>
<sales>8638000</sales>
<year>1999</year>
</element>
<element>
<efficiency>28.5</efficiency>
<sales>8778000</sales>
<year>2000</year>
</element>
<element>
<efficiency>28.8</efficiency>
<sales>8352000</sales>
<year>2001</year>
</element>
<element>
<efficiency>29</efficiency>
<sales>8042000</sales>
<year>2002</year>
</element>
<element>
<efficiency>29.5</efficiency>
<sales>7556000</sales>
<year>2003</year>
</element>
<element>
<efficiency>29.5</efficiency>
<sales>7483000</sales>
<year>2004</year>
</element>
<element>
<efficiency>30.3</efficiency>
<sales>7660000</sales>
<year>2005</year>
</element>
<element>
<efficiency>30.1</efficiency>
<sales>7762000</sales>
<year>2006</year>
</element>
<element>
<efficiency>31.2</efficiency>
<sales>7562000</sales>
<year>2007</year>
</element>
<element>
<efficiency>31.5</efficiency>
<sales>6769000</sales>
<year>2008</year>
</element>
<element>
<efficiency>32.9</efficiency>
<sales>5402000</sales>
<year>2009</year>
</element>
<element>
<efficiency>33.9</efficiency>
<sales>5636000</sales>
<year>2010</year>
</element>
<element>
<efficiency>33.1</efficiency>
<sales>6093000</sales>
<year>2011</year>
</element>
<element>
<efficiency>35.3</efficiency>
<sales>7245000</sales>
<year>2012</year>
</element>
<element>
<efficiency>36.4</efficiency>
<sales>7586000</sales>
<year>2013</year>
</element>
<element>
<efficiency>36.5</efficiency>
<sales>7708000</sales>
<year>2014</year>
</element>
<element>
<efficiency>37.2</efficiency>
<sales>7517000</sales>
<year>2015</year>
</element>
<element>
<efficiency>37.7</efficiency>
<sales>6873000</sales>
<year>2016</year>
</element>
<element>
<efficiency>39.4</efficiency>
<sales>6081000</sales>
<year>2017</year>
</element>
</root>
install.packages('xml2')
parse_xml <- function (file) {
doc <- xml2::read_xml(file)
efficiency <- xml2::xml_double(xml2::xml_find_all(doc, "//root/element/efficiency"))
sales <- xml2::xml_double(xml2::xml_find_all(doc, "//root/element/sales"))
year <- xml2::xml_double(xml2::xml_find_all(doc, "//root/element/year"))
cbind(efficiency, sales, year)
}
data <- parse_xml('data.xml')
data
上面的代码片段创建了一个函数来提取销售额、效率和年份列。然后使用cbind将所有这些列组合在一起,生成一个表。此代码使用 xpath 查询来搜索给定的值。如果您的 XML 文档很复杂,则可能需要反复试验才能查询所需的值。因此,XML 数据格式通常不是共享数据的首选方式。
此解析逻辑封装在parse_xml函数中。这也有助于保持全局环境中没有临时变量。
结论
数据分析师需要熟练地导入不同的数据格式,才能有效地开展数据建模和分析项目。本指南向您展示了如何导入三种常见格式:XML、JSON 和 CSV。要进一步掌握这些技能,您可以观看有关在 R 中查询和转换数据类型的课程。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~