我从许多混乱的pdf中读取数据。最终的结果,对于每一个pdf,是一个R数据,有一个变量,我称之为文本。dataframe的每一行包含原始pdf表的一行文本表示。每一行中的元素用‘\’字符分隔。其中一个是这样的:-
确诊病例总数
发送
3月22日新案件数目
住院总人数
入住ICU的总人数
死亡总人数x
病死率(CFR )
暴发或集群总数
与集群相关的案件总数
人道主义事务委员会的案件数目
中位年龄(年龄)
年龄范围(年龄)x 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,并让它来完成它的工作。
有办法这样做吗?
发布于 2020-04-11 16:21:17
您的直觉是正确的--您可以将您的列传递给read_delim,而无需首先将其保存为CSV,但您需要将其作为向量传递,而不是作为表传递。使用您的数据结构,我相信我已经在这里生成了您所请求的功能:
x = 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))
read_delim(x$Text, delim='|',
skip=1, na = c('-'),
col_names = c('Characteristic','Number','Pct')) %>%
mutate(Date = dmy('08.04.2020'))查看如何从对象中选择“Text”列。
https://stackoverflow.com/questions/61157738
复制相似问题