2017-11-09 16 views
2

一連の文字列を含むデータフレームがあります。その中には、2つの単語のフレーズが含まれています。これらのフレーズは1つの「疑似単語」に凝縮します。R:ルックアップテーブルを使用してデータフレームのサブストリングを置き換えます。

この例では、 "united kingdom"、 "saudi arabia"、 "european union"は、私にとって興味のあるフレーズです。私は上の「saudiarabia」とし「UNITEDKINGDOM」、「サウジアラビア」と「イギリス」のすべてのインスタンスを置き換えるしたいと思います。

次のようにテキスト文字列の私のデータフレームがある、次のように

text.df <- as.data.frame(
c(
    "Lorem ipsum dolor sit saudi arabia adipiscing elit.", # Contains "saudi arabia" 
    "Ut enim ad minim veniam united kingdom exercitation.", # Contains "united kingdom" 
    "Excepteur sint european union deserunt saudi arabia laborum", # Contains "european union" and "saudi arabia" 
    "Sed ut perspiciatis unde omnis error sit voluptate." # Contains nothing of interest 
)) 
colnames(text.df) <- 'content' 

マイ検索データフレームは、次のとおりです。

lookup <- data.frame(matrix(ncol = 2, nrow = 3)) 
lookup$X1 <- c('united kingdom', 'european union', 'saudi arabia') 
lookup$X2 <- c('unitedkingdom', 'europeanunion', 'saudiarabia') 

私の目的は次のようになりますデータフレームを返すことです:

> new.text.df 
                content 
1  Lorem ipsum dolor sit saudiarabia adipiscing elit. 
2  Ut enim ad minim veniam unitedkingdom exercitation. 
3 Excepteur sint europeanunion deserunt saudiarabia laborum 
4  Sed ut perspiciatis unde omnis error sit voluptate. 
> 

誰でも助けていただければ幸いです。前もって感謝します。

答えて

3
library(qdap) 

text.df <- as.data.frame(
    c(
    "Lorem ipsum dolor sit saudi arabia adipiscing elit.", # Contains "saudi arabia" 
    "Ut enim ad minim veniam united kingdom exercitation.", # Contains "united kingdom" 
    "Excepteur sint european union deserunt saudi arabia laborum", # Contains "european union" and "saudi arabia" 
    "Sed ut perspiciatis unde omnis error sit voluptate." # Contains nothing of interest 
), stringsAsFactors = F) 
colnames(text.df) <- 'content' 

lookup <- data.frame(matrix(ncol = 2, nrow = 3)) 
lookup$X1 <- c('united kingdom', 'european union', 'saudi arabia') 
lookup$X2 <- c('unitedkingdom', 'europeanunion', 'saudiarabia') 

# provide patterns, replacements, actual texts to update 
mgsub(lookup$X1, lookup$X2, text.df$content) 

# [1] "Lorem ipsum dolor sit saudiarabia adipiscing elit."  
# [2] "Ut enim ad minim veniam unitedkingdom exercitation."  
# [3] "Excepteur sint europeanunion deserunt saudiarabia laborum" 
# [4] "Sed ut perspiciatis unde omnis error sit voluptate." 
1

あなたはこれを試みることができる:

library(stringr) 
transform_word <- function(text){ 
for (i in 1:nrow(lookup)) 
    text <- stringr::str_replace_all(text,lookup$X1[i],lookup$X2[i]) 
return(text) 
} 

text.df[,'content'] <- sapply(text.df[,'content'],transform_word) 
関連する問題