2016-11-23 1 views
2

이름과 ID가 포함 된 목록이 있다고합시다. 이처럼 :목록을 사용하여 데이터 프레임에 ID를 할당합니다.

df <- structure(list(Headline1 = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 
1L, 2L), .Label = c("brand1-Trainingspak Kopen", "brand1-Trainingspak Nodig?" 
), class = "factor"), Headline2 = structure(c(2L, 2L, 1L, 1L, 
2L, 2L, 1L, 1L), .Label = c("Maat niet Goed? Gratis Retour", 
"Ontdek de Nieuwe Collectie."), class = "factor"), Description = structure(c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("Al Meer Dan 1 Miljoen Tevreden Klanten. Ontdek De Mooiste Collectie Van Ons Land", 
"Bestel nu! Alle Trainingspakken van brand1 ®, direct uit voorraad leverbaar." 
), class = "factor")), .Names = c("Headline1", "Headline2", "Description" 
), row.names = c(NA, -8L), class = "data.frame") 

ID입니다은, 예를 들어, 목록에있는 값은 다음과 같습니다

l <- structure(list(Kopen = 11, Nodig = 12, `Maat niet Goed? Gratis Retour` = 21, 
    `Ontdek de Nieuwe Collectie.` = 22, `Bestel NU, Morgen in Huis` = 23, 
    `Al Meer Dan 1 Miljoen Tevreden Klanten. Ontdek De Mooiste Collectie Van Ons Land` = 31, 
    `Meer Dan %N% %ad_group%, Altijd Op Voorraad! Scherpe Prijzen.Bestel Nu.` = 32, 
    `Bestel nu! Alle maten %ad_group% van %merk%, direct uit voorraad leverbaar` = 33), .Names = c("Kopen", 
"Nodig", "Maat niet Goed? Gratis Retour", "Ontdek de Nieuwe Collectie.", 
"Bestel NU, Morgen in Huis", "Al Meer Dan 1 Miljoen Tevreden Klanten. Ontdek De Mooiste Collectie Van Ons Land", 
"Meer Dan %N% %ad_group%, Altijd Op Voorraad! Scherpe Prijzen.Bestel Nu.", 
"Bestel nu! Alle maten %ad_group% van %merk%, direct uit voorraad leverbaar" 
)) 

$Kopen 
[1] 11 

$Nodig 
[1] 12 

$`Maat niet Goed? Gratis Retour` 
[1] 21 

$`Ontdek de Nieuwe Collectie.` 
[1] 22 

$`Bestel NU, Morgen in Huis` 
[1] 23 

$`Al Meer Dan 1 Miljoen Tevreden Klanten. Ontdek De Mooiste Collectie Van Ons Land` 
[1] 31 

$`Meer Dan %N% %ad_group%, Altijd Op Voorraad! Scherpe Prijzen.Bestel Nu.` 
[1] 32 

$`Bestel nu! Alle maten %ad_group% van %merk%, direct uit voorraad leverbaar` 
[1] 33 

는 지금은 다음과 같습니다 내 dataframe의 요소를 식별하기 위해이 목록을 사용하려면 11,12,21,22,23,31,32,33.

내가 기대하는 결과는 다음과 같습니다

Headline1 Headline1_id Headline2     Headline2_id 
Kopen  11   Ontdek de Nieuwe Collectie. 22 
Nodig  12   Ontdek de Nieuwe Collectie. 22 

내가 sapply, lapply and vapply와 조합 pmatch, %in%, match, grep and grepl을 사용했습니다. 하지만 불행히도 패턴을 제대로 일치시키지 못했습니다. 이 빠른 솔루션을 사용할 수 있습니까?

그래서 한 번 더 마무리하기 :

이름 (L)을 별도로 Headline1, Headline2Description에 대해 일치해야합니다. 그런 다음 요소가 식별되면 새 열을 만들고 id를 추가하십시오. 이 요청하는 경우

+0

당신은 또한 NAS는 바로이 것? 즉, Headerline2 [3] – Sotos

+0

예. 일치하는 항목이 없으면 NA 여야합니다. 지금 내가 맞으면 전체 데이터 프레임이 IDS와 일치해야하지만 실제로는 다른 행에 있어야합니다. 그 때문에 하나는 NAs를 소개합니다. –

답변

2

모름 (또는 어쩌면 그것은 당신에게 몇 가지 아이디어 제공) :

cbind(df, apply(df, 1:2, getElement, object = l))[c(1,4,2,5,3,6)]

+0

사실, 이것은 완벽하게 일치하는 작품입니다. 하지만 부분 일치로이 작업을 수행 할 수도 있습니다. 내 인생을 더 편하게 해줄 수있을 것입니다. 감사! eleborate하려면 : Bestel nu! 모든 광고 단위 % ad_group % van % merk %, 바로 가기 레버 바로 가기 Bestel과 일치해야합니다! brand1®, 직접 레버 레버를 사용하여 모든 교육을 실시하십시오. –

+0

일치하는 다른 예를 줄 수 있습니까? 내 말은,이 일치를하기가 쉽지 않다는 것입니다. 다른 문자열은 또한 bestel nu로 시작합니다. 또는 당신은 아마도 문장이 동일하지만 단어가 그 중간에 있다는 것을 의미합니까? –

+0

늦게 답변 해 주셔서 감사합니다. 나는 휴가 중이 었어. IDS는 문장의 차이에 따라 지정되어야합니다. 그래서 실제로 백분율 기호를 사용하여 해당 ID를 선택할 수 있습니다. 이상적으로 나는 어떤 매칭도 필요 없다. 그러나 나는 문장에 기초하여 IDS를 생성합니다. 하지만 숫자로 변환하면 키워드를 다시 사용할 때마다 변경되므로 작동하지 않습니다. 다른 맥락에서 그것은 내가 원하지 않는 것입니다. % i은 패턴 대체에 사용하고 주제에 특정한 특정 키워드로 채 웁니다. –

관련 문제