我得到了一个 Excel 电子表格:列名在第一行,垃圾文本在第二行,实际数据从第三行开始。我想使用readxl
包将其读入数据框,保留第一行的列名,但丢弃第二行。
简单地将所有行读入数据框中,然后删除第一行是行不通的,因为 excel 文件第二行中的垃圾与列的数据类型不匹配。
我想要一种无需手动编辑 excel 文件的方法。
我建议阅读整个文件,然后手动删除第 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
这是另一个解决方案:
首先,使用 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