如何使用readxl跳过第二行

时间:2018-08-03 13:09:22

标签: r excel readxl

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

仅将所有行读入数据框然后删除第一行将不起作用,因为excel文件第二行中的垃圾与该列的数据类型不匹配。

我想要一种无需手动编辑excel文件的方法。

2 个答案:

答案 0 :(得分:4)

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

作为示例,这是一个示例Excel文件的屏幕截图

enter image description here

我们阅读了完整的文件,并删除了第1行(与Excel工作表的第二行相对应)

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

答案 1 :(得分:1)

这是另一种解决方案:

首先,使用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