首页 > 解决方案 > 缺少自然分隔符时如何将长字符串转换为数据框?(右)

问题描述

我正在寻找一种解决方案,它采用上面的字符串并创建一个 8 列的数据框。这可能是一个非常复杂的任务需要解决。对于如何更接近解决此问题的任何建议,我将非常高兴。我在下面提供了一个代码示例。

library(tibble)

string <- "Organisationsnummer Företag (huvudorg) Anordnare (enhet) Utbildning Sunkod Kommunkod Medverkande org Ansökningsomgång\n0212000212 Arboga Kommun Arboga kommun, Vuxenutbildningen Specialistundersköterska inom demens 415723rb 1984 Arboga Kommun, Socialförvaltningen Yrkeshögskoleutbildning 2018\n0212000156 Borås Kommun Borås Stad – Borås Yrkeshögskola Autoingenjör 525523af 1490 Rebel Walls Yrkeshögskoleutbildning 2019"

DF <- tibble(Organisationsnummer = c("0212000212", "0212000156"),
       'Företag (huvudorg)' = c("Arboga Kommun", "Borås Kommun"),
       'Anordnare (enhet)' = c("Arboga kommun, Vuxenutbildningen", "Borås Stad – Borås Yrkeshögskola"),
       Utbildning = c("Specialistundersköterska inom demens", "Autoingenjör"),
       Sunkod = c("415723rb", "525523af"),
       Kommunkod = c("1984", "1490"),
       'Medverkande org' = c("Arboga Kommun, Socialförvaltningen", "Rebel Walls"),
       Ansökningsomgång = c("Yrkeshögskoleutbildning 2018", "Yrkeshögskoleutbildning 2019"))

我正在努力解决如何在正确的列中分割字符串,因为不存在自然分隔符(这是我使用 tesseract OCR 扫描到 R 中的大型 pdf 文件中的数据)。

我希望从第一行中的字符创建列。由于“Företag (huvudorg)”、“Anordnare (enhet)”和“Medverkande org”三列中使用了空格,我不能使用像空白这样的单个分隔符。

现在主要问题来了。从某种意义上说,某些列是可预测的,因为它们是由空格分隔的。“Organisationsnummer”始终是一个 10 位数字。“Sunkod”始终是六个数字和两个字母。“Kommunkod”始终是一个四位数的数字。“Ansökningsomgång”是“Yrkeshögskoleutbildning 2018”或“Yrkeshögskoleutbildning 2019”。

第二,第三,第四和第七列可能会因情况而异。它们可以有一个、两个、三个或更多个空格、逗号或“-”。

我该如何着手解决这个问题?非常感谢任何帮助。

标签: rstringsplit

解决方案


推荐阅读