在 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)
现在您使用 cols
和 rows
参数重新读取 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)
有没有办法将命名的 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)
现在您使用 cols
和 rows
参数重新读取 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)