为我提供了一个excel电子表格:列名在第一行中,垃圾文本在第二行中,而实际数据从第三行开始。我想使用readxl
包将其读入数据帧,保留第一行的列名,但丢弃第二行。
仅将所有行读入数据框然后删除第一行将不起作用,因为excel文件第二行中的垃圾与该列的数据类型不匹配。
我想要一种无需手动编辑excel文件的方法。
答案 0 :(得分:4)
我建议阅读整个文件,然后手动删除第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
答案 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