在 R 中导入 Excel-表

Importing Excel-tables in R

有没有办法将命名的 Excel-table 作为 data.frame 导入 R?

我通常在一个工作表上有几个名为 Excel-tables 的文件,我想将其导入为 data.frames,而不依赖于静态行和列引用Excel-tables.

的位置

我尝试设置 namedRegion,这是几个 Excel-导入函数的可用参数,但这似乎不适用于命名 Excel-tables。我目前正在使用 openxlxs 包,它有一个函数 getTables(),它从单个工作表创建一个带有 Excel-table 名称的变量,但不是 table 中的数据s.

您可以查看下一个包:

library(xlsx)
Data <- read.xlsx('YourFile.xlsx',sheet=1)

library(readxl)
Data <- read_excel('YourFile.xlsx',sheet=1)

这两个选项都允许您定义特定区域以将数据加载到 R

我使用包 openxlsx 中的 read.xlsx。例如:

library(openxlsx)
fileA <- paste0(some.directory,'excel.file.xlsx')
A <-  read.xlsx(fileA, startRow = 3)

希望对您有所帮助

要获得您的名字 table 需要做一些工作。

首先您需要加载工作簿。

library(openxlsx)

wb <- loadWorkbook("name_excel_file.xlsx")

接下来您需要提取您命名的 table 的名称。

# get the name and the range
tables <- getTables(wb = wb,
                    sheet = 1)

如果您有多个名为 table 的人,它们都在 tables 中。我的名字 table 叫做 Table1.

接下来您要提取列号和行号,稍后您将使用它们从 Excel 文件中提取命名的 table。

# get the range
table_range <- names(tables[tables == "Table1"])
table_range_refs <- strsplit(table_range, ":")[[1]]

# use a regex to extract out the row numbers
table_range_row_num <- gsub("[^0-9.]", "", table_range_refs)
# extract out the column numbers
table_range_col_num <- convertFromExcelRef(table_range_refs)

现在您使用 colsrows 参数重新读取 Excel 文件。

# finally read it
my_df <- read.xlsx(xlsxFile = "name_excel_file.xlsx",
                   sheet = 1,
                   cols = table_range_col_num[1]:table_range_col_num[2],
                   rows = table_range_row_num[1]:table_range_row_num[2])

您最终得到的数据框仅包含您命名的 table 的内容。

我刚才用过这个。我在某处找到了这段代码,但我不知道是从哪里找到的。

这篇link可能对你有用

1. Install XLConnect package
2. Save a path to your file in a variable
3. Load workbook
4. Save your data to df

要获取 table 个名称,您可以使用函数

getTables(wb,sheet=1,simplify=T)

其中:

  • wb - 你的工作簿
  • sheet - sheet 姓名或也可能是号码
  • simplify = TRUE(默认)结果被简化为向量

https://rdrr.io/cran/XLConnect/man/getTables-methods.html

这是代码(不是我的,从上面的题目中复制过来的,只是稍微修改了一下)

require(XLConnect)
sampleFile = "C:/Users/your.name/Documents/test.xlsx"
wb = loadWorkbook(sampleFile)
myTable <- getTables(wb,sheet=1)
df<-readTable(wb, sheet = 1, table = myTable)