将数据框从 R 导出到 Microsoft Excel

Jesse John 2023年1月30日
  1. 将数据框从 R 导出到 Excel 的选项
  2. 使用 write.csv()write.csv2() 函数将数据框导出为 CSV 文件
  3. 使用包将数据框从 R 导出到 Excel
  4. 结论
将数据框从 R 导出到 Microsoft Excel

R 是一个强大的数据分析和可视化工具。但不是每个人都使用 R。

我们可能需要将数据分析的结果作为 Excel 文件发送给某人,或者我们可能希望在 PowerPoint 演示文稿中显示数据。不管是什么原因,将我们的数据导出到 Excel 是一项有用的技能。

将数据框从 R 导出到 Excel 的选项

R 通常提供多种方法来执行相同的任务。

本文将学习如何使用 utils 包的 write.csv()write.csv2() 函数将数据框导出到 Excel。utils 包包含在 R 的安装中并默认加载。

这是最通用的方法,因为它不需要额外的包。但它涉及两个步骤。一、将数据框导出为 CSV 文件。二、在 Excel 中打开 CSV 文件,保存为 Excel 文件。

我们还将了解三个将数据框直接导出为 Excel 文件的包。这些软件包需要由用户安装。他们可能还需要系统上存在其他软件。

使用 write.csv()write.csv2() 函数将数据框导出为 CSV 文件

R 的内置功能允许我们通过下面描述的两个步骤将数据框导出到 Excel。

write.csv()write.csv2() 函数创建电子表格软件可以读取的 CSV 文件。这些函数是创建纯文本文件的 write.table() 函数的便捷包装器。

CSV 代表逗号分隔值。CSV 文件是纯文本文件。数据框的每一行都成为文件中的一行。列用逗号(或分号)分隔。

当使用 write.csv() 函数导出数据框时,R 会创建一个文本文件,其中逗号用作字段(列)分隔符,句点用作小数点。

如果你想创建一个逗号作为小数点的文件,你应该使用 write.csv2() 函数。此函数使用分号作为字段分隔符,因为逗号用作小数点。

函数文档指出,这符合某些西欧语言环境中 CSV 文件的 Excel 约定。

在下面的示例中,我们将创建一个小型数据框并使用 write.csv() 函数将其导出为 CSV 文件。第一个参数是数据框的名称。

第二个参数是双引号中的文件名。第三个参数防止创建一列行号。

默认情况下,它会将文件保存在 R 的当前工作目录中。我们可以使用 getwd() 函数找到当前工作目录。

# Create two vectors.
myText = c("Unit 1", "Unit 2", "Unit 3")
myNumbers = c(55, 1.53, 0.049)

# Create the data frame using the vectors.
df = data.frame(myText, myNumbers)

# Export the data frame as a CSV file.
# It will save the file in the current working directory of R.
write.csv(df, file="myCSVFile.csv", row.names = FALSE)

使用上面最后一行代码中的 write.csv2() 函数创建一个使用逗号作为小数分隔符的 CSV 文件。

打开 CSV 文件并将其另存为 Excel 文件

要从我们的 CSV 文件创建 Excel 文件,请按照以下步骤操作。

  • 在 Excel 中打开 CSV 文件。
  • 保存文件。Excel 将提示将其另存为 Excel 文件。
  • 以所需文件名将文件保存在所需位置。

如果 CSV 文件在 Excel 中看起来不正确,请使用纯文本编辑器打开它以验证数据是否已正确导出。如果 Excel 无法正确显示正确的数据,请尝试以下操作。

  • 如果 Excel 创建的列比预期的多或少,请在打开 CSV 文件时修改分隔符选项。使用在 CSV 文件中找到的相同分隔符。
  • 如果 Excel 无法正确显示小数字符,请在打开文件后尝试更改相关列的数字格式。系统区域设置也可能提供线索。

使用包将数据框从 R 导出到 Excel

几个贡献的包允许我们直接将数据框导出到 Microsoft Excel。我们将了解三个这样的包。

这些包有几个功能和选项,允许我们自定义 Excel 文件的各个方面。但是,我们将重点介绍将数据框导出为 Excel 文件的函数的基本用法。

如果这些软件包尚未安装,我们需要安装它们。

请注意,如果我们尝试加载具有相同名称函数的多个包,R 将引发错误。如果发生这种情况,我们必须在加载所需的包之前使用语法 detach(package:name_of_package) 分离我们不再需要的包。

使用 openxlsx 包将数据框从 R 导出到 Excel

openxlsx 包具有 write.xlsx() 函数来创建 Excel 文件。

在 Windows 上,openxlsx 软件包需要在计算机上安装 RTools 软件。否则,它的某些功能可能无法正常工作。

该函数的第一个参数是数据框,第二个参数是要创建的文件名。默认情况下,它将在 R 的当前工作目录中创建文件。

# Install the openxlsx package if you do not already have it.
# This is a one-time task.
install.packages("openxlsx")

# Load the openxlsx package.
library(openxlsx)

# Use the write.xlsx() function to create the Excel file.
# It will save the file to R's current working directory.
write.xlsx(df, file = "My_openxlsx_File.xlsx")

使用 xlsx 包将数据框从 R 导出到 Excel

xlsx 软件包需要安装 Java(包括 JDK)。

这个包有 write.xlsx() 函数来从数据框创建一个 Excel 文件。第一个参数是数据框。

第二个参数是要创建的文件。第三个参数防止创建一列行号。

# Install the xlsx package if you do not already have it.
# This is a one-time task.
install.packages("xlsx")

# If the openxlsx package is currently loaded, detach it.
detach(package:openxlsx)

# Load the xlsx package.
library(xlsx)

# Use the write.xlsx() function to create the Excel file.
# It will save the file to R's current working directory.
write.xlsx(df, file = "My_xlsx_File.xlsx", row.names = FALSE)

使用 writexl 包将数据框从 R 导出到 Excel

writexl 包具有 write_xlsx() 函数来创建 Excel 文件。第一个参数是数据框,第二个参数是要创建的文件路径。

如果只给出文件名,它将在 R 的当前工作目录中创建。

# Install the writexl package if you do not already have it.
# This is a one-time task.
install.packages("writexl")

# Load the writexl package.
library(writexl)

# Use the write_xlsx() function to create the Excel file.
# It will save the file to R's current working directory.
write_xlsx(df, path = "My_writexl_File.xlsx")

在 R Studio 中获取有关 R 函数的帮助

有关 R Studio 中 R 函数的帮助,请单击 帮助 > 搜索 R 帮助,然后在搜索框中键入函数名称(不带括号)。

或者,在 R 控制台的命令提示符处键入一个问号,后跟函数名称。例如,?write.table

有关任何包的更详细文档,请在 CRAN 上搜索包。

结论

R 写入 CSV 文件的默认功能足以将数据框导出到 Microsoft Excel,但它需要两个步骤。其他包允许我们一步导出 Excel 文件,但首先需要安装。

其中一些还依赖于其他软件。鉴于这些不同的选项,我们可以选择最适合我们的方法。

作者: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.