详细教程(R数据导入教程指南)

本文概述

  • 检查数据
  • 准备你的R工作区
  • 将CSV, TXT, HTML和其他常见文件读入R
  • 将SAS, SPSS和其他数据集读入R
  • 将数据库和其他来源读入R
  • 这仅仅是个开始…
将数据加载到R中可能非常令人沮丧。你几乎想要进入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包
检查数据首先, 你首先需要掌握数据。可以将数据以Excel, SPSS或其他文件类型的文件形式保存到计算机上。将数据保存在本地后, 你可以稍后再进行编辑, 添加更多数据或更改它们, 保留可能用于计算数据的公式等。
但是, 数据也可以在Internet上找到, 也可以通过其他来源获得。
在哪里找不到这些数据不在本教程的讨论范围之内, 因此, 到目前为止, 只需提及此数据集列表以及srcmini的交互式教程(其中介绍了如何导入和操作Quandl数据集)即可。
在继续并发现如何将数据加载到R中之前, 仔细阅读以下清单, 这将使将数据正确导入R变得更加容易:
  • 如果使用电子表格, 则通常为标题保留第一行, 而第一列则用于标识采样单位。
  • 避免使用名称, 值或带有空格的字段, 否则每个单词将被解释为一个单独的变量, 从而导致与数据集中每行元素数有关的错误;
  • 如果要串联单词, 请插入。在单词之间而不是空格之间;
  • 短名称优先于长名称。
  • 尽量避免使用包含符号的名称, 例如?, $, %, ^, &, *, (, ), -, #, ?、、 < , > , /, |, \, [, ], {, 和};
  • 删除你在Excel文件中所做的所有注释, 以避免多余的列或不适用项添加到文件中;和
  • 确保数据集中的任何缺失值都用NA表示。
准备你的R工作区在进入RStudio之前, 请确保进入RStudio并查看需要做什么。你可能有一个仍然充满数据和值的环境, 你可以使用以下代码行将其全部删除:
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文件读入R
如果用或;分隔值, 则通常使用.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()函数。在这里, 你有两个选择:
  1. 你的JSON文件存储在你的工作目录中:
# Activate `rjson` library(rjson)# Import data from json file JsonData < - fromJSON(file= "< filename.json> " )

  1. 你的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发现你的数据科学旅程中的前途!

    推荐阅读