2016-06-27 5 views
0

df2의 문자열을 df1의 부분 일치 문자열로 바꿔야합니다.일치하는 문자열로 문자열 바꾸기

마찬가지로 1MG 솔루션도 df1에 1MG가 있으므로 df1에서 1MG로 교체해야합니다. 이것은 백만 건의 레코드에 대해 수행해야합니다.

> df1 
      A  
     1MG    
     ABOF   
     Amazon   
     American Swan 
     Clovia  

    > df2 


     A     B           
1MG Solution   1MG 
ABOF Prime    ABOF 
Dual Command   NA 
Amazon AWF    AMazon 
American Swan Fi  AMerican Swan 
Clovia World Spaces Clovia 
Shape Makers   NA 
Unions     NA 
+0

'grep'을 사용할 수 있습니다. – akrun

+0

나를 보여줄 수 있습니까? 난 그냥 초보예요 :) –

+0

예상 출력은 'df2'의 'B'열입니까? – akrun

답변

1

stringr 패키지는 이러한 작업에 이상적입니다 이런 식으로 해결책을 찾을 수 있다고 생각을,

library(stringr) 
df2$B <- str_extract(df2$A, paste(df1$A, collapse = '|')) 
df2 
#     A    B 
#1  1MG Solution   1MG 
#2   ABOF Prime   ABOF 
#3  Dual Command   <NA> 
#4   Amazon AWF  Amazon 
#5 American Swan Fi American Swan 
#6 Clovia World Spaces  Clovia 
#7  Shape Makers   <NA> 
#8    Unions   <NA> 

참고 : 변수를 문자로 변환해야합니다 (요인 인 경우)

0

grep 기능을 사용하면 첫 번째 데이터 프레임의 패턴이 1 초 내에 존재하는지 확인할 수 있습니다. 예를 들어
:

df <- data.frame(A=c("1MG","ABOF","Amazon","American Swan","Clovia")) 
label=c("1MG Sol","ABOF Prim", 
"Dual Command","Amazon AWF","something else", 
"American Swan Fi","Clovia World Spaces") 
apply(df,1,function(x) grep(x,label)) #will return the matching postion 

다음은 일치하는 위치 반환 함수를 적용 :

> apply(df,1,function(x) grep(x,label)) 
[1] 1 2 4 6 7 

난 당신이

관련 문제