【发布时间】:2020-04-11 13:43:48
【问题描述】:
我正在从许多杂乱无章的 pdf 中读取数据。对于每个 pdf,最终结果是一个 R 数据框,带有一个变量,我称之为文本。数据框的每一行都包含原始 pdf 表的一行的文本表示。每行中的元素用“|”分隔特点。其中一个看起来像这样:-
确诊病例总数|965
nd
新增病例数 3 月 22 日|129
住院总人数|277|28.7
入住 ICU 的总人数|36|3.7
总死亡人数|6
病死率 (CFR)|0.6
爆发或聚集的总数|44
与集群相关的病例总数|243|25.2 输入病例总数|201|20.8
HCW 病例数|247|25.6
中位年龄(岁)|45
年龄范围(岁)|0-95
它可以从这里重新创建:-
structure(list(Text = c("Total number of confirmed cases|965",
"nd", "Number of new cases 22 March|129", "Total number hospitalised|277|28.7",
"Total number admitted to ICU|36|3.7", "Total number of deaths|6",
"Case Fatality Ratio (CFR )|0.6", "Total number of outbreaks or clusters|44",
"Total number cases associated with clusters|243|25.2", "Total number of imported cases|201|20.8",
"Number of cases in HCW|247|25.6", "Median age (years)|45", "Age range (years)|0-95"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-13L))
目前,我使用 write_csv() 将其写出,然后使用 read_delim() 将其读回:-
write_csv(HPSC,'data/temp.csv')
HPSC <- read_delim('data/temp.csv', delim='|',
skip=1, na = c('-'),
col_names = c('Characteristic','Number','Pct')) %>%
mutate(Date = dmy('08.04.2020')) # In the real version, the date comes from elsewhere.
这很繁琐,但并不难将很多这些放在一起,并得到我的最终结果 - 本质上是一个每个 pdf 一行的数据框。
所以,这一切都很好。我需要 read_delim 的全部功能,因为否则我必须编写自己的代码来识别分隔符、跳过行并处理每行上有不同数量的项目的事实。我对自己正在做的事情感到非常满意,但我隐约感到惊讶的是,我不能只将一列数据框提供给 read_delim,并让它完成它的工作。
有没有办法做到这一点?
【问题讨论】:
-
您不能传递数据框,但可以使用
text参数传递列。read.delim(text = HPSC$Text, ...)
标签: r