2017-11-09 2 views
2

일련의 문자열을 포함하는 데이터 프레임이 있는데 그 중 일부는 하나의 "의사 단어"로 압축하려는 두 단어 구문을 포함합니다.R : 찾아보기 테이블을 사용하여 데이터 프레임의 하위 문자열 바꾸기

이 예제에서 "united kingdom", "saudi arabia"및 "european union"은 나에게 중요한 문구입니다. 나는 그래서 "saudiarabia"와 함께 "unitedkingdom", "사우디 아라비아"와 "영국"의 모든 인스턴스를 교체하고 싶습니다.

다음과 같이 텍스트 문자열의 내 dataframe은 다음과 같습니다

> 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. 
> 
:

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

내 목표는 같이 보이는 dataframe을 반환하는 것입니다 : 다음과 같이

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' 

내 조회 dataframe입니다

누구든지 도움을받을 수 있다면 크게 감사하겠습니다! 미리 감사드립니다.

답변

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) 
관련 문제