Regex 在R中的某个单词后创建新列
我有如下数据列:Regex 在R中的某个单词后创建新列,regex,r,string-split,Regex,R,String Split,我有如下数据列: adrs <- data.frame(address=rbind(c("CONFIDENTIST s.r.o. Ul. pri,Panoráme 26 945 01 Komárno"), c("PD Dobrá Niva, a.s. Námestie,SNP 217/2 962 61 Dobrá Niva"))) adrs现在我可能在s.r.o.或a.s. strsplit(gsub("(.*(?:s\\.r\\.o\\.|
adrs <- data.frame(address=rbind(c("CONFIDENTIST s.r.o. Ul. pri,Panoráme 26 945 01 Komárno"),
c("PD Dobrá Niva, a.s. Námestie,SNP 217/2 962 61 Dobrá Niva")))
adrs现在我可能在s.r.o.
或a.s.
strsplit(gsub("(.*(?:s\\.r\\.o\\.|a\\.s\\.))\\s+(.*)","\\1;\\2",adrs$address),";")
您可能希望研究正则表达式,但基于有限的测试数据,这是一项非常困难的任务。你需要非常明确地说明违反规则的情况。你需要非常非常清楚在文本中寻找什么来创建中断。当然,这就是我要解决的问题,如何定义中断规则。首先是在“a.s”和“s.r.o”之后,也可能是“962 61”再次出现。好吧,我们不能帮你。你需要了解你的数据。如果你的规则是“在s.r.o或a.s.之后分割”,那没关系。但您的示例数据还有其他拆分。你需要知道你想要拆分的每一个可能的单词,或者你想要拆分的字母/数字的模式。是的,我认为小规模的演示(不是完整的解决方案)会有助于你理解。如果我对你的两个样本行和输出数据做更多的假设,这甚至可能是一个更完整的版本:strsplit(gsub()(s\\.r\\.o\\.|a\\.s\\)\\s+(.*)\\s+(\\d{3}\\d{2})\\s+(.*),“\\1\n\\2\n\\3\n\\4”,adrs$address),“\n”)
,但这是在做很多假设。
strsplit(gsub("(.*(?:s\\.r\\.o\\.|a\\.s\\.))\\s+(.*)","\\1;\\2",adrs$address),";")