本文概述
- 检查数据
- 准备你的R工作区
- 将CSV, TXT, HTML和其他常见文件读入R
- 将SAS, SPSS和其他数据集读入R
- 将数据库和其他来源读入R
- 这仅仅是个开始…
为了满足这些需求, srcmini决定发布全面而又简单的教程, 以将数据快速从R导入到R, 从简单的文本文件到更高级的SPSS和SAS文件。继续阅读本教程, 以了解如何轻松将文件导入R!
(尝试此交互式课程:在R中导入数据(第1部分), 以在R中使用CSV和Excel文件。)
内容
- 将CSV, TXT, HTML和其他常见文件读入R
- 使用read.table()读取TXT文件
- 将CSV文件读入R
- read.delim()用于分隔文件
- XLConnect软件包, 用于读取Excel文件
- 读取JSON文件
- 读取XML文件
- 阅读HTML表格
- 将SAS, SPSS和其他数据集读入R
- SPSS文件
- 读取Stata文件
- 读取Systat文件
- 读取SAS文件
- 读取Minitab文件
- 读取RDA或RData文件
- 将数据库和其他来源读入R
- 将关系和非关系数据库读入R
- 通过网络抓取
- 通过TM包
但是, 数据也可以在Internet上找到, 也可以通过其他来源获得。
在哪里找不到这些数据不在本教程的讨论范围之内, 因此, 到目前为止, 只需提及此数据集列表以及srcmini的交互式教程(其中介绍了如何导入和操作Quandl数据集)即可。
在继续并发现如何将数据加载到R中之前, 仔细阅读以下清单, 这将使将数据正确导入R变得更加容易:
- 如果使用电子表格, 则通常为标题保留第一行, 而第一列则用于标识采样单位。
- 避免使用名称, 值或带有空格的字段, 否则每个单词将被解释为一个单独的变量, 从而导致与数据集中每行元素数有关的错误;
- 如果要串联单词, 请插入。在单词之间而不是空格之间;
- 短名称优先于长名称。
- 尽量避免使用包含符号的名称, 例如?, $, %, ^, &, *, (, ), -, #, ?、、 < , > , /, |, \, [, ], {, 和};
- 删除你在Excel文件中所做的所有注释, 以避免多余的列或不适用项添加到文件中;和
- 确保数据集中的任何缺失值都用NA表示。
rm(list=ls())
rm()函数允许你” 从指定的环境中删除对象” 。在这种情况下, 你指定要考虑此函数的列表, 这是ls()函数的结果。最后一个函数返回一个字符串向量, 该向量给出指定环境中对象的名称。由于此函数没有参数, 因此假设你是指你作为用户定义的数据集和函数。
接下来, 你可能会很容易知道当前在哪里设置工作目录:
你可能会考虑将由于此功能而获得的路径更改为, 可能更改为存储数据集的文件夹:
setwd("<
location of your dataset>
")
将CSV, TXT, HTML和其他常见文件读入R你会注意到, 以下基本的R函数着重于将电子表格导入R, 而不是Excel或其他类型的文件。如果你对后者更感兴趣, 请进一步滚动以发现将其他文件导入R的方法。
使用read.table()读取TXT文件
如果你有.txt或制表符分隔的文本文件, 则可以使用基本的R函数read.table()轻松导入。换句话说, 你文件的内容看起来与此相似
16a
27b
38c
49d
510e
可以导入如下:
请注意, 理想情况下, 你应该只传入文件名和扩展名, 因为你已将工作目录设置为数据集所在的文件夹。你会在上面的代码块中看到, 第一个参数并不总是文件名, 而可能是包含数据的网页。标头参数指定你是否在数据文件中指定了列名。最后, 你会看到, 使用此功能, 文件中的数据将成为data.frame对象。
检查你在srcmini Light块中导入的最终结果!
很高兴知道read.table()函数是将简单数据文件导入R的最重要和最常用的函数。它既简单又灵活。这就是为什么你应该查看我们之前的有关将Excel文件读取和导入到R中的教程的原因, 该教程详细解释了如何最佳使用read.table()函数。
对于没有用制表符分隔的文件, 例如.csv和其他分隔的文件, 你实际上使用了此基本功能的变体。
这些变体与read.table()函数几乎相同, 并且仅在三个方面与之不同:
- 分隔符;
- header参数始终设置为TRUE, 表示正在读取的文件的第一行包含带有变量名的标题;
- fill参数也设置为TRUE, 这意味着如果行的长度不相等, 则将隐式添加空白字段。
如果用或;分隔值, 则通常使用.csv文件。其内容将类似于以下内容:
Col1, Col2, Col3
1, 2, 3
4, 5, 6
7, 8, 9
a, b, c
确保已将文件另存为常规的csv文件, 且没有字节顺序标记(BOM)。如果你这样做了, 并且没有在导入函数中添加额外的参数fileEncoding =” UTF-8-BOM” , 则会在导入数据的开头看到奇怪的字符!
要将此文件成功加载到R中, 可以使用在其中指定分隔符的read.table()函数, 也可以使用read.csv()或read.csv2()函数。如果分隔符为a, 则使用前一个函数, 如果为, 则使用后一个函数;用于分隔数据文件中的值。
请记住, read.csv()和read.csv2()函数与read.table()函数几乎相同, 唯一的区别是它们的头和填充参数默认情况下设置为TRUE。
提示:如果你想了解更多有关可以在read.table(), read.csv()或read.csv2()函数中使用的参数的信息, 则可以随时查看我们的阅读并将Excel文件导入R教程。 , 其中详细说明了如何使用read.table(), read.csv()或read.csv2()函数。
请注意, 如果收到一条警告消息, 如” readTableHeader找到的最后一行不完整” , 则可以尝试在包含最后一个值的单元格中” 站立” (在这种情况下为c), 然后按Enter。通常, 此警告将得到解决, 因为该消息表明文件的最后一行未以换行符(EOL)结束, 可以是换行符或回车和换行符。不要忘记保存文件以确保你的更改已保存!
Pro-Tip:使用诸如NotePad之类的文本编辑器来确保添加EOL字符而不向数据添加新的行或列。
另请注意, 如果你初始化了除数据所包含单元格以外的其他单元格, 则会看到一些具有NA值的行或列。最好的情况是删除那些行和列!
read.delim()用于分隔文件
如果文件中的分隔符与制表符, 逗号或分号不同, 则始终可以使用read.delim()和read.delim2()函数。这些是read.table()函数的变体, 就像read.csv()函数一样。
因此, 它们与read.table()函数有很多共同点, 不同之处在于它们假定正在读取的第一行是带有属性名称的标题, 而他们使用制表符代替分隔符空格, 逗号或分号。它们还将fill参数设置为TRUE, 这意味着空白字段将添加到长度不等的行中。
你可以按以下方式使用read.delim()和read.delim2()函数:
XLConnect软件包, 用于读取Excel文件
要将Excel文件加载到R中, 首先需要从某种意义上进一步准备工作区, 即需要安装软件包。
只需运行以下代码即可完成此操作:
install.packages("<
name of the package>
")
【详细教程(R数据导入教程指南)】安装软件包后, 你只需输入以下内容即可在工作区中将其激活:
使用XLConnect包导入Excel文件将Excel文件直接导入R的第一种方法是使用XLConnect包。安装该软件包, 如果不确定是否已经安装, 请检查是否已经存在。
接下来, 你可以开始使用readWorksheetFromFile()函数, 如下所示:
library(XLConnect)
df <
- readWorksheetFromFile("<
file name and extension>
", sheet = 1)
请注意, 你需要添加sheet参数以指定要加载到R中的图纸。你还可以添加更多规格。你可以在我们的阅读和将Excel文件导入R的教程中找到这些说明。
你还可以使用loadWorkbook()函数加载整个工作簿, 然后通过readWorksheet()读入希望作为R数据框显示的工作表:
wb <
- loadWorkbook("<
name and extension of your file>
")
df <
- readWorksheet(wb, sheet=1)
再次注意, sheet参数不是你可以在readWorkSheetFromFile()中使用的唯一参数。如果你想了解有关程序包或可传递给readWorkSheetFromFile()函数或所提及的两个替代函数的所有参数的更多信息, 则可以访问程序包的RDocumentation页面。
使用Readxl软件包导入Excel文件readxl软件包使R用户可以轻松读取Excel文件, 如下所示:
library(readxl)
df <
- read_excel("<
name and extension of your file>
")
请注意, 第一个参数指定.xls或.xlsx文件的路径, 你可以使用getwd()和setwd()函数进行设置。你还可以添加一个工作表参数, 就像XLConnect包一样, 还可以添加更多参数, 你可以在此处或在本博文中阅读这些参数。
将JSON文件读入R
要将JSON文件放入R, 首先需要安装或加载rjson包。如果你想知道如何安装软件包或如何检查软件包是否已安装, 请向上滚动至将Excel文件导入R的部分:)
一旦完成, 就可以使用fromJSON()函数。在这里, 你有两个选择:
- 你的JSON文件存储在你的工作目录中:
# Activate `rjson`
library(rjson)# Import data from json file
JsonData <
- fromJSON(file= "<
filename.json>
" )
- 你的JSON文件可通过以下网址获得:
# Activate `rjson`
library(rjson)# Import data from json file
JsonData <
- fromJSON(file= "<
URL to your JSON file>
" )
将XML数据读入R
如果要将XML数据放入R中, 最简单的方法之一就是使用XML包。首先, 请确保将XML包安装并加载到工作区中, 就像上面演示的那样。然后, 你可以使用xmlTreeParse()函数直接从Web解析XML文件:
# Activate the `XML` library
library(XML)# Parse the XML file
xmlfile <
- xmlTreeParse("<
Your URL to the XML data>
")
接下来, 你可以通过输入以下命令检查R是否知道xmlfile在XML中:
# Result is usually similar to this: [1] "XMLDocument""XMLAbstractDocument"
class(xmlfile)
提示:你可以使用xmlRoot()函数访问顶部节点:
topxml <
- xmlRoot(xmlfile)
当打印出xmlfile向量时, 你会注意到数据以一种奇怪的方式呈现。这是因为此时XML文件仍然是R中的真实XML文档。要将数据放入数据框中, 首先需要提取XML值。你可以使用xmlSApply()函数执行此操作:
topxml <
- xmlSApply(topxml, function(x) xmlSApply(x, xmlValue))
该函数的第一个参数将是topxml, 因为它是你要在其子节点上执行特定功能的顶层节点。然后, 列出要应用于每个子节点的功能。在这种情况下, 你要提取叶XML节点的内容。将其与第一个参数topxml结合使用, 将确保你将对每个叶子XML节点执行此操作。
最后, 将值放入数据框!
你可以将data.frame()函数与矩阵转换函数t()结合使用来执行此操作。此外, 你还指定不包括任何行名:
xml_df <
- data.frame(t(topxml), row.names=NULL)
如果你认为前面的步骤太复杂了, 请执行以下操作:
url <
- "<
a URL with XML data>
"
data_df <
- xmlToDataFrame(url)
将HTML表中的数据导入R
从HTML表到R非常简单:
# Assign your URL to `url`
url <
- "<
a URL>
"# Read the HTML table
data_df <
- readHTMLTable(url, which=3)
请注意, which参数允许你指定要从文档中返回哪些表。
如果你在本质上是” 无法加载外部实体” 而犯了一个错误, 请不要混淆:这个错误已被很多人表示, 并已由软件包的作者在此处确认。
你可以通过结合使用RCurl包和XML包来读入数据来解决此问题:
# Activate the libraries
library(XML)
library(RCurl)# Assign your URL to `url`
url <
- "YourURL"# Get the data
urldata <
- getURL(url)# Read the HTML table
data <
- readHTMLTable(urldata, stringsAsFactors = FALSE)
请注意, 你不希望将字符串注册为因子或分类变量!你还可以使用httr包来完成完全相同的操作, 不同的是, 你希望通过使用rawToChar参数将URL内容的原始对象转换为字符:
# Activate `httr`
library(httr)# Get the URL data
urldata <
- GET(url)# Read the HTML table
data <
- readHTMLTable(rawToChar(urldata$content), stringsAsFactors = FALSE)
将SAS, SPSS和其他数据集读入R如你所知, R是用于统计计算的编程语言和软件环境。这就是为什么当我说许多人使用R作为SPSS, SAS等商业统计程序的开源替代品时, 它并不令人惊讶的原因。
在本节中, 你将看到如何从高级统计软件程序导入数据:将看到需要安装哪些程序包才能将数据文件读入R, 就像处理完Excel中存储的数据一样或JSON文件。
将SPSS文件读入R
如果你是SPSS软件的用户, 并且希望将SPSS文件导入R, 请首先安装外部软件包。加载软件包后, 运行其中包含的read.spss()函数, 你应该一切顺利!
# Activate the `foreign` library
library(foreign)# Read the SPSS data
mySPSSData <
- read.spss("example.sav")
提示, 如果你希望结果显示在数据框中, 请确保将read.spss()函数的to.data.frame参数设置为TRUE。此外, 如果你不希望将带有值标签的变量转换为具有相应级别的R因子, 则应将use.value.labels参数设置为FALSE:
# Activate the `foreign` library
library(foreign)# Read the SPSS data
mySPSSData <
- read.spss("example.sav", to.data.frame=TRUE, use.value.labels=FALSE)
请记住, 因子是只能包含有限数量的不同值的变量。因此, 它们通常被称为” 类别变量” 。可以标注因子的不同值, 因此通常称为” 值标签”
将Stata文件读入R
要导入Stata文件, 请继续使用外部软件包。使用read.dta()函数将数据放入R:
# Activate the `foreign` library
library(foreign)# Read Stata data into R
mydata <
- read.dta("<
Path to file>
")
将Systat文件读入R
如果要将Systat文件放入R, 还需要使用外部程序包, 如下所示:
# Activate the `foreign` library
library(foreign)# Read Systat data
mydata <
- read.systat("<
Path to file>
")
将SAS文件读入R
对于也希望将SAS文件导入R的用户来说, 这非常简单!对于初学者, 请安装sas7bdat软件包。加载它, 然后调用包中包含的read.sas7bdat()函数, 你就可以开始了!
# Activate the `sas7bdat` library
library(sas7bdat)# Read in the SAS data
mySASData <
- read.sas7bdat("example.sas7bdat")
这个功能使你感兴趣吗?你想了解更多吗?访问” Rdocumentation” 页面。
请注意, 你还可以使用外部库在R中加载SAS数据。在这种情况下, 将使用具有read.ssd()和read.xport()函数的SAS永久数据集或SAS XPORT格式库开始。 , 分别。欲了解更多信息, 请点击这里。
将Minitab文件读入R
你是否选择用于统计目的的Minitab软件?如果你想在R中使用Minitab数据, 那就别无所求!
将.mtp文件导入R非常简单。安装外部程序包并加载该程序包也就不足为奇了。然后只需使用该包中的read.mtp()函数:
# Activate the `foreign` library
library(foreign)# Read the Minitab data
myMTPData <
- read.mtp("example2.mtp")
将RDA或RData文件读入R
如果你的数据文件是你在R中另存为.rdata文件的文件, 则可以按以下方式读取它:
load("<
FileName>
.RDA")
将数据库和其他来源读入R由于本教程侧重于从不同类型的源中导入数据, 因此仅简短地提及你可以将来自数据库, 网络抓取等的数据导入R中是正确的。
将关系和非关系数据库读入R
从关系数据库导入数据有关将数据从关系数据库获取到R中的更多信息, 请查看本教程以从MonetDB导入数据。
但是, 如果要将数据从MySQL加载到R中, 则可以遵循本教程, 该教程使用dplyr包将数据导入R中。
如果你想了解更多有关最后一个软件包的信息, 请务必查看srcmini的交互式课程, 对于每个想要使用dplyr来访问数据库中R之外存储的数据的人, 这绝对是必须的。此外, 本课程还教你如何使用dplyr执行复杂的数据操作任务!
从非关系数据库导入数据有关将非关系数据库中的数据加载到R中的更多信息, 例如来自MongoDB的数据, 你可以阅读” 统计计算中的另一个博客” 中的博文, 以获取有关如何将数据从MongoDB加载到R中的概述。
通过Web抓取导入数据
你可以在本srcmini教程中阅读如何使用PhantomJS和rvest包使用R刮取JavaScript数据。如果要使用API??导入数据, 可以在此处轻松找到一个。
提示:你可以查看这套令人惊叹的教程, 这些教程涉及网络抓取的基础知识。
通过TM包导入数据
对于那些有兴趣导入文本数据以开始挖掘文本的人, 你可以在安装并激活tm软件包后以以下方式阅读文本文件:
text <
- readLines("<
filePath>
")
然后, 必须确保将这些数据作为语料库加载才能正确开始:
docs <
- Corpus(VectorSource(text))
你可以在此处找到有关使用R进行文本挖掘的易用教程。
这仅仅是个开始…将数据加载到R中只是激动人心的数据分析, 操纵和可视化过程中的一小步。 srcmini在这里指导你完成!
继续我们的R课程导入数据, 或者使用你的数据构建模型:就像我们的机器学习入门一样, 我们的机器学习一定会派上用场。
如果你想继续进行数据操作, 请阅读有关” 解决R中的数据框架问题的15个简单解决方案” 的srcmini教程, 或考虑参加srcmini的data.table课程。
你不确定从哪里开始?查阅srcmini的课程表, 并通过srcmini发现你的数据科学旅程中的前途!
推荐阅读
- 机器学习和深度学习之间的差异
- 面向初学者(R中的机器学习)
- Python中的AdaBoost分类器
- Atom IDE概述(安装和使用)
- BI和分析平台的比较
- Python机器学习入门开发权威简介
- 使用Auto-Keras进行自动化机器学习
- 在Python中使用Zip文件
- 使用Scikit-learn的朴素贝叶斯分类