首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清理不规则字符串并将它们组织成右列中的数据帧

如何清理不规则字符串并将它们组织成右列中的数据帧
EN

Stack Overflow用户
提问于 2020-04-30 11:11:12
回答 1查看 36关注 0票数 1

我在一个向量中有两个长字符串,看起来像这样:

代码语言:javascript
复制
x <- c("Job Information\n\nLocation: \n\n\nScarsdale, New York, 10583-3050, United States \n\n\n\n\n\nJob ID: \n53827738\n\n\nPosted: \nApril 22, 2020\n\n\n\n\nMin Experience: \n3-5 Years\n\n\n\n\nRequired Travel: \n0-10%",
       "Job Information\n\nLocation: \n\n\nGlenview, Illinois, 60025, United States \n\n\n\n\n\nJob ID: \n53812433\n\n\nPosted: \nApril 21, 2020\n\n\n\n\nSalary: \n$110,000.00 - $170,000.00 (Yearly Salary)")

我的目标是将它们整洁地组织在一个数据帧(输出表单)中,如下所示:

代码语言:javascript
复制
#View(df)
     Location     Job ID    Posted      Min Experience   Required Travel   Salary
[1] Scarsdale,... 53827738  April 22... 3-5 Years         0-10%             NA
[2] Glenview,...  53812433  April 21...  NA                NA            $110,000.00 - $170,000.00 (Yearly Salary)  

(...)是为了在这里整齐地呈现数据帧。

但是,正如您所看到的,两个字符串不一定具有相同的属性。例如,第一个字符串具有Min Experience和Required Travel,但在第二个字符串中,这些字段不存在,但具有薪水。所以这对我来说变得非常棘手。我想我会在\n字符之间阅读,但它们没有设置,一些有两个换行符,另一些有4或5行。我想知道是否有人可以帮助我。我会很感激的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 11:22:03

我们可以在一个或多个'\n' ('\n{1,}')上拆分字符串。删除每个单词中的第一个单词( 'Job Information'),因为我们在任何地方都不需要它(x <- x[-1])。对于字符串的其余部分,我们可以看到它们以列名称-列值的形式成对出现。我们使用交替索引和bind_rows通过名称将它们组合在一起,从而创建一个数据帧。

代码语言:javascript
复制
dplyr::bind_rows(sapply(strsplit(gsub(':', '', x), '\n{1,}'), function(x) {
   x <- x[-1]
   setNames(as.data.frame(t(x[c(FALSE, TRUE)])), x[c(TRUE, FALSE)])
}))

#                                        Location   Job ID         Posted  Min Experience 
#1 Scarsdale, New York, 10583-3050, United States  53827738 April 22, 2020       3-5 Years
#2       Glenview, Illinois, 60025, United States  53812433 April 21, 2020            <NA>
#   Required Travel                                    Salary 
#1            0-10%                                      <NA>
#2             <NA> $110,000.00 - $170,000.00 (Yearly Salary)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61515285

复制
相关文章

相似问题

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