我正在使用 tabulizer/tabulapdf 从 pdf 中抓取表格。我的脚本在几个月前有效,但现在我收到了一个我不熟悉的数据框 - 并且它抛出错误。问题似乎是原始表格没有标题行,但 tabulapdf 将第一行视为一行,我无法从数据框的“标题”中提取数据。
这是来自
dput()
的数据框:
scraped_data <- list(
structure(
list(
`NORTH AMERICA. PREMIER LEAGUE (W) (25.10.2022)` = "Team A 2 – 0 Team B"
),
row.names = c(NA, -1L),
spec = structure(
list(
cols = list(
`NORTH AMERICA. PREMIER LEAGUE (W) (25.10.2024)` = structure(
list(),
class = c("collector_character", "collector")
)
),
default = structure(
list(),
class = c("collector_guess", "collector")
),
delim = "\t"
),
class = "col_spec"
),
# problems = <pointer: 0x1347fb760>, # This throws an error when trying to assign
# to `new_scraped_data`. Commenting out.
class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame")
)
)
以前,我会使用
scraped_data[[1]][1,1]
和 scraped_data[[1]][2,1]
提取元素...有没有办法保留此功能,这样我就不必重写所有代码(还有更多这样的表)?
所以寻找类似“”的东西
scraped_data |> turn_header_into_a_row()
从列表中提取标题并将其添加为新行。
header_row <- colnames(scraped_data[[1]])
scraped_data[[1]] <- rbind(header_row, scraped_data[[1]])
请注意,除非您重命名列,否则列名称将保留