【发布时间】:2019-12-11 23:52:43
【问题描述】:
问题: 大家好,我有这个示例数据框,其中包含我需要提取的机构名称:
mydf<- data.frame(ID=c('1', '2', '3'), Institution=c('Univ of Space, TX, US', '[Bloggs, J., Smith, T.] Univ of Time, CA, US', '[Windz, P., Lol, D.] College of the World, CA, US' ))
我只需要提取机构名称,它会如下所示:
1 Univ of Space
2 Univ of Time
3 College of the World
我不关心机构字符串中的任何其他字符,只关心第一个逗号之前的所有字符。问题是我在某些情况下机构名称前面会带有一个括号,有时是单独的(如第一行的情况)。
我编写了以下代码来分别提取这两个实例:
ex_inst<- str_extract_all(mydf$Institution,"(?<=])(.+?)(?=,)", simplify = TRUE)
ex_inst2<- str_extract_all(mydf$Institution,"^(.+?)(?=,)", simplify = TRUE)
我正在努力将它们结合在一起。我已经研究了交替,并尝试了这个
ex_inst3<- str_extract_all(mydf$Institution,"^(.+?)(?=,)|(?<=])(.+?)(?=,)", simplify = TRUE)
但我对正则表达式没有经验,并且对它的输出感到困惑:
[1,] "Univ of Space" ""
[2,] "[Bloggs" " Univ of Time"
[3,] "[Windz" " College of the World"
将它与 stringr 结合的最佳方法是什么,我可以使用某种 if else 语句吗? 谢谢。
【问题讨论】: