正如问题所述,我试图在另一个数据框(在B中)的任何地方找到一个列值(在A $ X [i]中)并返回列名(B $ [j])。
我这里有两张桌子:
Client Account df
JOHN KATE RAM ABE
2341 K919 Q1234 23445
V454 56783 88872 9009
87874 345GH 63547 8834S
Client details df
Date ClientNumber Region Amount Insurance
12/5/2015 9009 EMEA 15236.23 Yes
12/5/2015 K919 EMEA 1889.22 No
12/5/2015 87874 EMEA 152000.0 No
12/5/2015 345GH EMEA 28877.53 Yes
12/5/2015 9009 EMEA 90000.89 Yes
我正在尝试将客户端名称添加到客户端详细信息表 期望的输出:
Client details table
Date ClientNumber Region Amount Insurance Name
12/5/2015 9009 EMEA 15236.23 Yes ABE
12/5/2015 K919 EMEA 1889.22 No KATE
12/5/2015 87874 EMEA 152000.0 No JOHN
12/5/2015 345GH EMEA 28877.53 Yes KATE
12/5/2015 9009 EMEA 90000.89 Yes ABE
这些表非常大,我很乐意使用矢量化而不是使用循环。
答案 0 :(得分:2)
我假设第一个数据框是A
,第二个数据框是B
。您应该能够使用包tidyr
和dplyr
合并两者:
library(tidyr)
library(dplyr)
A %>%
gather(JOHN:ABE, key = Name, Value = ClientNumber) %>%
left_join(B, ., by = "ClientNumber")
left_join
使用完整数据集B
并通过A
ClientNumber
合并
答案 1 :(得分:0)
如果您将dput(head(data))
的结果粘贴到此处以便能够轻松回答,那会更好。由于没有循环,所以在背景中包含循环的类(例如*apply
函数)都不需要,所以我猜你需要以矢量格式做事:
Details$Name <- names(unlist(AccountDF))[match(Details$clientnumber,unlist(AccountDF),nomatch = 0)]
我希望它可以提供帮助