首页 > 解决方案 > 如何使用“readxl”包从 .xlsx 文件中选择两个特定列?

问题描述

我有一个包含 28 列的 .xlsx 文件。其中,我希望仅选择第 3 列(“销售人员”)和第 28 列(“客户 ID”)。我尝试了两个代码,但它们似乎都不起作用。请告诉我我在这里做错了什么:

read_xlsx("Active List till 7 Feb .xlsx",sheet = "Raw data",col_names = c("Salesperson","Customer ID"))

或者

read_xlsx("Active List till 7 Feb .xlsx",sheet = "Raw data",col_names = c(3,28))

使用第一个代码时出现以下错误

Error: Sheet 4 has 28 columns (28 unskipped), but `col_names` has length 2

在第二个代码中,我得到了从 3 到 28 的所有列,而不仅仅是 3 和 28。

我知道我可以稍后使用选择特定的列,select()但我想知道如何将其直接指定到read_xlsx()函数中。也让我知道是否有更好的方法来实现这一点。

谢谢!

标签: rreadxl

解决方案


您可以为此使用以下代码

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")
library(xlsx)
read.xlsx("Active List till 7 Feb .xlsx", sheetName = "Raw data", colIndex = c(3,28))

或者

使用openxlsx包的解决方案

library(openxlsx)
read.xlsx("Active List till 7 Feb .xlsx", sheet = "Raw data", cols = c(3,28))

推荐阅读