5

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

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

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

4

2 回答 2

10

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

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

在此处输入图像描述

我们读取完整的文件,并删除第 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
于 2018-08-03T13:22:40.923 回答
7

这是另一个解决方案:

首先,使用 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
于 2018-12-06T11:14:22.907 回答