如何在rstudio中导入excel文件?

Antoine Soetewey 2019-12-18 13 minute read

介绍

正如我们在本文中所见的那样 如何安装r和rstudio,R对许多计算任务和统计分析非常有用。但是,没有将数据集导入R的可能性,它不会那么强大和有用。因为您最有可能使用您自己的数据,能够将其导入R对于任何用户至关重要。

在本文中,我呈现了两种不同的方法来导入Excel文件; (i)通过文本编辑器和(ii)以更为“用户友好”的方式。我还讨论了两种方法的主要优点和缺点。注意:

  • 如何导入数据集通常取决于文件的格式(Excel,CSV,文本,SPS,STATA等)。我只关注Excel文件,因为它是数据集的最常用类型的文件
  • 有几种其他方法可以导入Excel文件(可能是我不知道的一些),但我介绍了20个最简单而强大的导入此类文件的方法
  • 无论什么类型的文件和导入方式,有一个金标准有关数据集的结构:列对应于变量,行对应于观察(在术语的广泛意义上),每个值必须具有其自己的单元格(被称为整洁的格式):

数据集的结构。资料来源:哈德利威克姆的数据科学& Garrett Grolemund

将Excel文件转换为CSV文件

在处理进口之前,第一件事是将Excel文件的格式更改为CSV格式。1 CSV格式是使用数据集和编程语言时的标准,因为与Excel相比,它是一种更强大的格式。

如果您的文件已处于CSV格式(使用Extension.CSV),则可以跳过此部分。如果该文件不在CSV格式(例如扩展为.xlsx),则可以通过以下步骤轻松将其转换为CSV:

  1. 打开您的Excel文件
  2. 单击文件> Save as
  3. 选择格式.csv
  4. 点击保存

检查文件是否使用扩展名.csv完成。如果是这种情况,您的文件现在已准备好导入。但首先,让我在将数据集导入Rstudio,工作目录时介绍一个重要的概念。

r工作目录

虽然编程语言可能非常强大,但它通常需要我们的帮助和导入数据集不是例外。实际上,在导入数据之前,必须告诉RStudio所在的位置(所以让Rstudio知道在哪个文件夹中查找数据集)。但在此之前,让我介绍一下 工作目录。工作目录是Rstudio当前工作的位置(在您的计算机中)(实际上Rstudio无法在整个计算机上工作;它正在计算机的一个文件夹中)。关于此工作目录,我们将需要两个功能:

  1. getwd() (wd stands for working directory)
  2. setwd()

获取工作目录

In most cases, when you open RStudio, the working directory (so where it is currently working) is different than where your dataset is located. To know what is the working directory RStudio is currently using, run getwd(). On MacOS, this function will most likely render a location such as "/Users/yourname/", while on Windows it will most likely render "c:/Documents/". Do not worry if your working directory is different, the most important is to set the working directory correctly (so where your file is located) and not where it is now.

设置工作目录

如前所述,您的数据集最可能位于与工作目录不同的位置。如果没有您的任何操作,Rstudio将永远无法导入文件,因为它不在正确的文件夹中(您将遇到控制台中的以下错误:无法打开文件'data.csv':没有这样的文件或目录) 。现在,为了指定文件的正确位置(即,告诉Rstudio在它应该查找数据集的文件夹中),您有三个选项:

  1. 用户友好的方法
  2. 通过控制台
  3. 通过文本编辑器(见下面为什么是我的首选选项)

用户友好的方法

要设置正确的文件夹,请将工作目录设置为等于文件所在的文件夹,请按照下列步骤操作:

  1. 在RStudio的右下方,单击选项卡“文件”
  2. 点击房屋图标旁边的“主页”
  3. 转到数据集所在的文件夹
  4. 点击“更多”
  5. 单击“设置为工作目录

在Rstudio中设置工作目录(用户友好的方法)

或者,您还可以通过单击会话设置工作目录>设置工作目录> Choose Directory…

在Rstudio中设置工作目录(用户友好的方法)

As you can see in the console, any of the two methods will actually execute the code setwd() with the path to the folder you specified. So by clicking on the buttons you actually asked RStudio to write a line of code for you. This method has the advantage that you do not need to remember the code and that you will not make a mistake in the name of the path to your folder. The disadvantage is that if you leave RStudio and open it again later, you will have to specify the working directory again as RStudio did not save your actions via the buttons.

通过控制台

You can specify the working directory by running setwd(path/to/folder) directly in the console, with path/to/folder being the path to the folder containing your dataset. However, you will need to run the command again when reopening RStudio.

通过文本编辑器

这种方法实际上是上面的两个的组合:

  1. 通过遵循与用户友好的方法的完全相同的步骤设置工作目录(通过按钮)
  2. 复制在控制台中执行的代码并将其粘贴在文本编辑器中(即,您的脚本)

I recommend this method for several reasons. First, you do not need to remember the setwd() function. Second, you will not make typos in the path of your folder (path which can sometimes be quite long if you have folders inside folders). Third, when saving your script (which I assume you do otherwise you would lose all your work), you also save the actions you just made via the buttons. So when you reopen your script in the future, no matter what is the current directory, by executing your script (which now include the line of code for setting the working directory), you will at the same time specify the working directory you selected for this project.

导入您的DataSet.

既然您已将Excel文件转换为CSV文件,并且您已通过设置工作目录指定包含数据的文件夹,您现在可以实际导入数据集。提醒一两种导入文件的方法:

  1. 以用户友好的方式
  2. 通过文本编辑器(另请参阅以下为什么是我的首选选项)

无论您选择哪种方法,它都是一个很好的做法,首先在TextEdit(Mac上)或记事本(在Windows上)以查看原始数据。如果在Excel中打开文件,您将看到已格式化的数据,因此会错过进口所需的一些重要信息。下面的原始数据示例:

原始数据示例

我们需要寻找一些东西,以便正确导入我们的数据集:

  • 变量名称是否存在?
  • 值如何分开?逗号,分号,空白,标签?
  • 小数点是一个点还是逗号?
  • 如何指定缺失值?空细胞,na,null,o,其他?

用户友好的方式

如下所示,只需单击该文件即可> Import Dataset…

导入数据集在rstudio中

一个看起来像这样的窗口将打开:

在Rstudio导入窗口

在此窗口中,您可以预览您的数据,更重要的是,检查您的数据似乎是否已正确导入。如果已正确导入数据,您可以单击“导入”。如果不是这样的话,您可以在查看原始数据时更改与您收集的信息相对应的窗口底部(下面的数据预览)。下面,您最有可能使用的导入选项:

  • 名称:设置数据集的名称(默认值是文件的名称)。避免特殊字符和长名称(因为您必须多次键入数据集的名称)。我亲自重命名我的数据集,诸如“dat”之类的通用名称,其他人使用“df”(for dataframe),“data”,甚至是“my_data”。例如,您可以使用更多的显式名称,例如“tennis_data”,例如网球匹配的数据。但是,使用数据集的特定名称的主要缺点是,如果例如,要重复使用在分析其他数据集上的网球数据时创建的代码,则需要通过替换“tennis_data”的所有出现来编辑代码您的新数据集的名称
  • 跳过:指定要跳过的顶部行数(默认为0)。大多数时候,0很好。但是,如果您的文件在顶部(或想要忽略的信息)中包含一些空行,则设置要跳过的行数
  • 第一行作为名称:指定是否存在变量名称(默认值是名称存在)
  • 分隔符:单独值的字符。从上面的原始数据中,您可以看到分隔符是逗号(“,”)。如果您的值由“;”分隔,则将其更改为分号。
  • na:指定缺少的值(默认为空单元格)。从上面的原始数据中,您可以看到缺失值只是空单元格,因此请将NA默认或将其更改为“空”。如果原始数据中的值被编码为“na”或“0”(提示:请勿将自己丢失为“0”,则更改此选项(提示:为“0”),否则您将无法区分真正的零值和缺失值)

更改与数据对应的导入选项后,单击“导入”。您现在应该在新窗口中看到您的数据集,并从那里开始,您可以开始分析数据。

这种用户友好的方法具有您不需要记住代码的优势(请参阅整个代码的下一节)。但是,主要缺点是您的导入选项不会保存未来的使用,因此您需要每次打开Rstudio时手动导入数据集。

通过文本编辑器

Similarly to setting the working directory, I also recommend using the text editor instead of 用户友好的方法 for the simple reason that you can save your import options when using the text editor (and not when using 用户友好的方法). Saving your import options in your script (thanks to a line of code) allows you to quickly import your dataset the exact same way without having to repeat all the necessary steps every time you import your dataset. The command to import a CSV file is read.csv() (or read.csv2() which is equivalent but with other default import options). Here is an example with the same file than in 用户友好的方法:

dat <- read.csv(
  file = "data.csv",
  header = TRUE,
  sep = ",",
  dec = ".",
  stringsAsFactors = TRUE
)
  • dat <-:RStudio中数据集的名称。这意味着进口后,我需要通过调用来引用数据集 dat
  • file =: name of the file in the working directory. Do not forget "" around the name, the extension .csv at the end and the fact that RStudio is case sensitive ("Data.csv" will give an error) and space sensitive inside "" ("data .csv" will also throw an error). In our case the file is named “data.csv” so file = "data.csv"
  • header =: are variables names present? The default is TRUE, change it to FALSE if it is not the case in your dataset (TRUE and FALSE are always in capital letters, true will not work!)
  • sep =: 分隔器。相当于用户友好的方法中的分隔符。不要忘记“”。在我们的数据集中,值的分隔符是逗号 sep = ","
  • dec =:十进制。不要忘记“”。在我们的数据集中,数字值的十进制是一个点,所以 dec = "."
  • stringsAsFactors =: should character vectors be converted to factors? The default option used to be TRUE, but since R version 4.0.0 it is FALSE by default. If all your character vectors are actually 定性变量 (所以 因素 在r),将它设置为 TRUE
  • 我不编写缺失的值被编码为我数据集中的空单元格,因为它是默认值
  • 最后但并非最不重要的,不要忘记参数被逗号分隔

Other arguments exist, run ?read.csv to see all of them.

After the importation you can check whether your data have been correctly imported by running View(dat) where dat is the name you chose for your data. A window, similar than for 用户友好的方法, will display your data. Alternatively you can also run head(dat) to see the first 6 rows and check that it corresponds to your Excel file. If something is not correct, edit the import options and check again. If your dataset has been correctly imported, you can now start analyzing your data. See other 关于R的文章 如果你想学习如何。

The advantage of importing your dataset directly via the code in the text editor is that your import options will be saved for a future usage, preventing you from importing it manually every time you open your script. You will, however, need to remember the function read.csv() (not the arguments since you can always check them in the help documentation).

导入SPSS(.sav)文件

只有Excel文件在这里详细介绍。但是,SPSS文件(.sav)也可以使用以下命令读取r:

library(foreign)
dat <- read.spss(
  file = "filename.sav",
  use.value.labels = TRUE,
  to.data.frame = TRUE
)

The read.spss() function outputs a data table which retrieves all the characteristics of the .sav file, including the names given for the different levels of the categorical variables and the characteristics of the variables. If you need more information about this command, see the help documentation (library(foreign) then ?read.spss).

谢谢阅读。我希望这篇文章有助于您在RStudio中导入Excel文件。现在您的数据集已正确导入,学习 如何努力 或者如何执行 r的描述性统计.

一如既往,如果您有问题或与本文所涵盖的主题相关的建议,请将其添加为评论,以便其他读者可以从讨论中受益。


  1. I am aware that it is possible to import an Excel directly into R without converting it in a CSV file, with the read_excel() function from the {readxl} package for instance. However, CSV format is the standard and more importantly, importing a CSV does not require to 安装并加载包 (有时对初学者令人困惑)。↩︎



喜欢这篇文章?

获取更新 每次发布新文章。
任何垃圾邮件都没有任何垃圾邮件。
分享: