2016-11-23 34 views
2

可以說我有一個包含名稱和ID的列表。就像這樣:使用一個列表來分配一個ID到一個數據框在R

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 

現在我想用這個列表來確定數據幀我的元素,看起來像這樣:

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是列表,例如值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 

我試圖在組合使用pmatch, %in%, match, grep and greplsapply, lapply and vapply。但不幸的是,我無法讓模式正確匹配。有沒有可用的快速解決方案?

所以收官一次:

名(L)應該對Headline1,分別Headline2Description匹配。然後創建一個新列,並在元素被識別時添加該ID。

+0

你也將有來港定居的權利?即'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

確實,這適用於完美匹配。但是,我也可以通過部分匹配來做到這一點。會讓我的生活更輕鬆。謝謝!點此進入: Bestel nu!所有mate%ad_group%van%merk%,直接和其他人一起應該匹配Bestel nu!所有Trainingspakken麪包車品牌®,直接uoor voorraad leverbaar。 –

+0

你能舉出其他匹配的例子嗎?我的意思是,做這個比賽並不容易,另一個字符串也以bestel nu開頭;或者你的意思是,也許這些句子是相同的,但中間的詞%? –

+0

對於遲到的回覆感到抱歉。我正在度假。 IDS應根據句子的差異進行分配。所以確實可以使用百分比符號來選擇這些ID。理想情況下,我不需要任何匹配。但我根據這個句子生成了IDS。但轉換爲數字將無法正常工作,因爲每當我再次使用關鍵字時它都會改變。在另一種情況下,這是我不想要的。 %i用於模式替換,並填寫特定於主題的特定關鍵字。 –

相關問題