代码之家  ›  专栏  ›  技术社区  ›  Matthew

如何使用readxl跳过第二行

  •  2
  • Matthew  · 技术社区  · 7 年前

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

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

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

    2 回复  |  直到 7 年前
        1
  •  5
  •   Maurits Evers    7 年前

    我建议读取整个文件,然后手动删除第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
    
        2
  •  1
  •   JamesR    6 年前

    下面是另一个解决方案:

    首先,阅读 第一排 使用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))
    

    最后,使用第一步重命名dataframe列:

    colnames(df) <- col_names
    
    推荐文章