如何使用 readxl 跳过第二行

How to skip the second row using readxl

我得到了一个 excel 电子表格:列名在第一行,垃圾文本在第二行,实际数据从第三行开始。我想使用 readxl 包将其读入数据框,保留第一行的列名但丢弃第二行。

简单地将所有行读入数据帧然后删除第一行是行不通的,因为 excel 文件第二行中的垃圾与列的数据类型不匹配.

我想要一种无需手动编辑 excel 文件即可执行此操作的方法。

我建议阅读整个文件,然后手动删除第 2 行。

例如,这里是示例 Excel 文件的屏幕截图

我们读取了完整的文件,并删除了第 1 行(对应于 Excel sheet 中的第二行)

library(readxl)
library(tidyverse)
df <- read_excel("Workbook1.xlsx")[-1, ] %>%
    map_df(~parse_guess(.))
df
## A tibble: 2 x 4
#      A     B     C     D
#  <int> <int> <int> <int>
#1    20    30    40    50
#2    30    40    50    60

这是另一个解决方案:

首先,使用 readxl 读取第一行并保存为数组(因为它只导入第一行,所以速度很快):

col_names <- array(read_excel('C:/spreadsheet.xlsx', sheet = 'Sheet1', n_max = 1, col_names = FALSE))

其次,阅读同一个电子表格,但从您的数据开始:

df <- data.frame(read_excel('C:/spreadsheet.xlsx', sheet = 'Sheet1', skip = 2, col_names = FALSE))

最后,使用第一步重命名数据框列:

colnames(df) <- col_names