1

我在 R 中有一个数据框,其中一列包含韩语地址。我需要提取其中一个词(一个以동结尾的词),如果它在那里(它可能丢失)并创建一个名为“dong”的新列,它将包含这个词。所以我的数据显示在“地址”列中,所需的输出显示在下面的“dong”列中。

address <- c("대전광역시 서구 탄방동 홈플러스","대전광역시 동구 효동 주민센터","대전광역시 대덕구 오정동 한남마트","대전광역시 동구 자양동 87-3번지 성동경로당","대전광역시 유성구 용계로 128")
dong <- c("탄방동","효동","오정동","자양동",NA)
data <- data.frame(address,dong, stringsAsFactors = FALSE)

我尝试过使用 grep ,但它并没有完全满足我的需求。

grep(".+동\\s",data$address,value=T)

我认为我有 2 个问题:1)我不确定如何编写正确的正则表达式来识别我需要的单词,以及 2)我不确定为什么 grep 返回整个字符串而不是单词。我将不胜感激任何建议。

4

2 回答 2

1
于 2017-04-02T10:00:23.093 回答
1

grep返回整个字符串。在您的情况下,stringr图书馆很有用。

library(stringr)
str_match(paste0(data$address, ' '), '([^\\s]+동)\\s')
     [,1]      [,2]    
[1,] "탄방동 " "탄방동"
[2,] "효동 "   "효동"  
[3,] "오정동 " "오정동"
[4,] "자양동 " "자양동"
[5,] NA        NA      

第 2 列是您想要的。请注意,我在字符串末尾添加了一个空格,以便如果字符串末尾出现“dong”,则正则表达式将匹配。

于 2017-04-02T09:44:31.287 回答