我正在尝试基于DF2在DF1中创建索引。在DF2中,我有一个名为ID的列,我想要做的是搜索DF1 $ Name,如果它包含来自DF2 $ Wine的值,则填写从DF2 $ ID到DF1 $ ID的ID。
DF1 = allwines
function getRandomColor(){
return Math.round(Math.random()) ? 'red' : 'black';
}
DF2 =葡萄酒
a <- c("Malbec", "Syrah", "Cabernet Sauvignon", "Merlot")
b <- c(1, 2, 3, 4)
allwines <- data.frame(a, b)
> allwines
a b
1 Malbec 1
2 Syrah 2
3 Cabernet Sauvignon 3
4 Merlot 4
期望输出
c <- c("Charles Smith", "K Vintners", "K Vintners", "Two Vintners", "K Vintners", "Kerloo", "Betz Family", "Efeste" )
d <- c("Royal City Syrah", "Cattle King Syrah", "Klein Syrah", "Make Haste Cinsault", "The Hidden Syrah", "Stone Tree Malbec", "Le Parrain Cabernet Sauvignon", "Big Papa Cabernet Sauvignon")
wines <- data.frame(c, d)
> wines
c d
1 Charles Smith Royal City Syrah
2 K Vintners Cattle King Syrah
3 K Vintners Klein Syrah
4 Two Vintners Make Haste Cinsault
5 K Vintners The Hidden Syrah
6 Kerloo Stone Tree Malbec
7 Betz Family Le Parrain Cabernet Sauvignon
8 Efeste Big Papa Cabernet Sauvignon
我的尝试刚刚生成了一个充满NA的ID行。 我们的想法是搜索葡萄酒行中的葡萄酒名称,并将它们与来自所有葡萄酒的葡萄酒相匹配,例如来自所有葡萄酒的西拉(Syrah),以及葡萄酒中的皇家城市西拉,牛王西拉和克莱因西拉。$ d
答案 0 :(得分:0)
如果名称恰好在df2 $ Wine和df1 $ Name之间匹配,您只需加入这些列即可获得所需内容。
在创建所有NA的列表之前,请尝试以下操作:
library(dplyr)
newdf <- left_join(df1, df2, by = c('Name', 'Wine'))
newdf现在应该包含来自df1的所有原始行,以及相应的ID(如果在df2中找到它。)
当然,这是假设所有内容都格式正确并且名称匹配。