个性化阅读
专注于IT技术分析

详细教程: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()轻松导入。换句话说, 你文件的内容看起来与此相似


1   6   a
2   7   b
3   8   c
4   9   d
5   10  e

可以导入如下:

请注意, 理想情况下, 你应该只传入文件名和扩展名, 因为你已将工作目录设置为数据集所在的文件夹。你会在上面的代码块中看到, 第一个参数并不总是文件名, 而可能是包含数据的网页。标头参数指定你是否在数据文件中指定了列名。最后, 你会看到, 使用此功能, 文件中的数据将成为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>")

安装软件包后, 你只需输入以下内容即可在工作区中将其激活:

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

赞(0)
未经允许不得转载:srcmini » 详细教程:R数据导入教程指南

评论 抢沙发

评论前必须登录!