首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用文本数据作为read_delim的输入

使用文本数据作为read_delim的输入
EN

Stack Overflow用户
提问于 2020-04-11 13:43:48
回答 1查看 71关注 0票数 0

我从许多混乱的pdf中读取数据。最终的结果,对于每一个pdf,是一个R数据,有一个变量,我称之为文本。dataframe的每一行包含原始pdf表的一行文本表示。每一行中的元素用‘\’字符分隔。其中一个是这样的:-

确诊病例总数

发送

3月22日新案件数目

住院总人数

入住ICU的总人数

死亡总人数x

病死率(CFR )

暴发或集群总数

与集群相关的案件总数

人道主义事务委员会的案件数目

中位年龄(年龄)

年龄范围(年龄)x 0-95

它可以被重新创造出来:-

代码语言:javascript
复制
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()中读取它如下:

代码语言:javascript
复制
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,并让它来完成它的工作。

有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-11 16:21:17

您的直觉是正确的--您可以将您的列传递给read_delim,而无需首先将其保存为CSV,但您需要将其作为向量传递,而不是作为表传递。使用您的数据结构,我相信我已经在这里生成了您所请求的功能:

代码语言:javascript
复制
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”列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61157738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档