使用一个列表来分配一个ID到一个数据框在R
可以说我有一个包含名称和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 grepl
与sapply, lapply and vapply
。但不幸的是,我无法让模式正确匹配。有没有可用的快速解决方案?
所以收官一次:
名(L)应该对Headline1
,分别Headline2
和Description
匹配。然后创建一个新列,并在元素被识别时添加该ID。
不知道你问这个(或者也许它给你一些想法):
cbind(df, apply(df, 1:2, getElement, object = l))[c(1,4,2,5,3,6)]
确实,这适用于完美匹配。但是,我也可以通过部分匹配来做到这一点。会让我的生活更轻松。谢谢!点此进入: Bestel nu!所有mate%ad_group%van%merk%,直接和其他人一起应该匹配Bestel nu!所有Trainingspakken面包车品牌®,直接uoor voorraad leverbaar。 –
你能举出其他匹配的例子吗?我的意思是,做这个比赛并不容易,另一个字符串也以bestel nu开头;或者你的意思是,也许这些句子是相同的,但中间的词%? –
对于迟到的回复感到抱歉。我正在度假。 IDS应根据句子的差异进行分配。所以确实可以使用百分比符号来选择这些ID。理想情况下,我不需要任何匹配。但我根据这个句子生成了IDS。但转换为数字将无法正常工作,因为每当我再次使用关键字时它都会改变。在另一种情况下,这是我不想要的。 %i用于模式替换,并填写特定于主题的特定关键字。 –
你也将有来港定居的权利?即'Headerline2 [3]' – Sotos
是的,如果没有匹配,它应该是NA。如果我现在正确的话,整个数据框应该与IDS匹配,但确实在不同的行上。为此引入了NAs。 –