以下是文本:
data$charge[1]
[1] "Count #1 as Filed: In Violation of; 21 O.S. 645; Count #2 as Filed: In Violation of; 21 O.S. 1541.1;Docket 1"
字符串
我目前正试图从法律的数据中提取法规。我的代码看起来像这样:
str_extract_all(data$charge[1:3], "(?<=Violation of;)(\\D|\\d){4,20}(?=;Count |;Docket)")
[[1]]
[1] "21 O.S. 645" "21 O.S. 1541.1"
[[2]]
[1] "21 O.S. 1435 "21 O.S. 1760(A)(1)
[[3]]
[1] "21 O.S. 1592"
型
我想将它们作为列添加到数据框中,如下所示:
id name statute1 statute2 statute3
1 BLACK, JOHN 21 O.S. 645 21 O.S. 1541.1 NA
2 DOE, JANE 21 O.S. 1435 21 O.S. 1760(A)(1) NA
3 ROSS, BOB 21 O.S. 1592 NA NA
型
谢谢!这有道理吗?
4条答案
按热度按时间djmepvbi1#
由于您没有包含数据或预期输出的可重现示例,因此我不能确定,但我认为您要查找的是
str_extract_all
的simplify = TRUE
参数。?str_extract_all
上的示例:字符串
使用您添加的示例:
型
jei2mxaa2#
这不是最有效的解决方案,但与其他人相比,我可以理解:
字符串
退货:
型
5uzkadbs3#
您可以使用
tidyverse
包来实现这一点。您的示例中的正则表达式模式不适用于提供的某些示例文本,因为它总是需要尾随分号。下面使用的模式应该更简单,但可能需要根据实际文本进行一些调整。字符串
样本数据:
型
guykilcj4#
可以使用
separate_wider_regex
函数:字符串