2014-11-28 6 views
0

두 개의 데이터 프레임이 있습니다. 첫 번째 데이터 프레임 lib은 단어가 두 열에있는 라이브러리입니다. 다음으로 제 2 데이터 프레임 DATA1은 변환한다 : 열 LIB $의 V1에서 해당 행의 문자열로 대체한다 LIB $의 V2 대해 열 DATA1을 $의 V1에 일치하는 문자열.R : 문자열을 일치시키고 바꿉니다. mgsub가 작동하지 않습니다.

lib <- data.frame(
    v1 = c("car", "great", "huge", "car", "great", "huge"), 
    v2 = c("cars", "awesome", "tall", "truck", "super", "very huge") 
) 



data1 <- data.frame(
    values = c("cars", "awesome", "tall", "truck", "super", "very huge") 
) 

최종 데이터 프레임 data1.final은 다음과 같이한다 :

data1$values <- mgsub(as.character(lib$V2), lib$V1, data1$values, fixed=T) 

하지만 아무것도 :

data1.final <- data.frame(
    values = c("car", "great", "huge", "car", "great", "huge") 
) 

내가 qdap 패키지에서 mgsub 기능이 시도 변경되었습니다. 어떤 아이디어?

답변

1
data1.final<- data.frame(values=lib$v1[match(data1$values,lib$v2)]) 

> data1.final 
    values 
1 car 
2 great 
3 huge 
4 car 
5 great 
6 huge 
1

mgsub은 문자열 내의 텍스트 대체 용입니다. 당신이 쫓고있는 것은 사전 조회입니다. %lc%이 (조회 문자를 의미) 것을

library(qdapTools) 
data1$values <- data1$values %lc% lib[, 2:1] 

## values 
## 1 car 
## 2 great 
## 3 huge 
## 4 car 
## 5 great 

참고 문자 출력을 강제로 다음 qdapTools 패키지에서 lookup (%l%)는이 문제를 해결하기 위해 여러 가지 방법 중 하나입니다.

mgsub(as.character(lib$v2), as.character(lib$v1), data1$values) 

을하지만,이 경우에 가장 좋은 방법되지 않습니다 :

당신이 사용했던 것 mgsub으로이 작업을 수행합니다.