如何在RStudio中从同一张Excel工作表导入两个独立的dataframe
实现方法
你可以使用readxl包指定读取范围或者自动识别数据块边界实现同工作表下多个独立数据框的导入,不需要拆分原始Excel文件。
方法1:手动指定读取范围(最稳妥,适合固定格式的表格)
首先安装并加载依赖包:
# 未安装时先执行安装 install.packages("readxl") library(readxl)
打开你的Excel文件确认两个数据框的实际单元格范围:
- 第一个数据框列对应A~D列,表头在第1行,假设数据到第N行结束,读取代码如下,将范围替换为你实际的单元格区间:
df1 <- read_excel("inner_merge.xlsx", sheet = "original", range = "A1:D[N]")
- 第二个数据框起始列是第一个数据框右侧空列之后的位置,共8列,假设数据区间为[起始列]1:[结束列][M],替换为实际区间后读取:
df2 <- read_excel("inner_merge.xlsx", sheet = "original", range = "[起始列]1:[结束列][M]")
方法2:自动识别数据块边界(适合表格行数经常变动的场景)
两个独立数据框之间存在空行作为分隔,我们可以先读取全表识别空行位置,再拆分读取:
library(readxl) # 先读取整个工作表的原始内容,不设表头 full_sheet <- read_excel("inner_merge.xlsx", sheet = "original", col_names = FALSE) # 识别全空行的位置,即为两个数据块的分隔点 empty_rows <- which(apply(full_sheet, 1, function(x) all(is.na(x)))) # 读取第一个数据框,行数到第一个空行之前 df1 <- read_excel("inner_merge.xlsx", sheet = "original", n_max = empty_rows[1]-1) # 读取第二个数据框,跳过第一个空行及之前的内容 df2 <- read_excel("inner_merge.xlsx", sheet = "original", skip = empty_rows[1])
注意:如果两个数据块之间的空行不止1行,调整
skip参数的数值即可,read_excel会自动跳过读取范围内开头的空行。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

