是否有“Left_Join”的R函数 但没有保留所有匹配的组合

我想将特定列中的值匹配到不同的数据帧,并检索仅第一个匹配的整行数据,而不是所有组合。

我想将特定列中的值匹配到不同的数据帧,并检索仅第一个匹配的整行数据,而不是所有组合。

我尝试使用 left_join,但它只是检索所有数据。

# First table
cusip <- c("AAA1", "AAA2","AAA3")
Datecode <- c("201912", "202003", "202006")
FirstTable <- data_frame(cusip,Datecode)
#Lookuptable
cusip <- c("AAA1", "AAA1","AAA2","AAA2","AAA3","AAA3")
Name <- c("Facebook Inc", "Facebook", "Apple","Apple INC", "Amz", "Amazon")
LookupTable <- data_frame(cusip,Name)

所以我想要的是在 FirstTable 中创建一个 Name 列,它从 Lookuptable 中检索 Name。但是,我不在乎它是否说 Facebook 或 Facebook Inc for AAA1。

一个简单的 Left_join 保留所有组合,所以当我只想要 3 时给我 6 行。

希望有人能帮忙,谢谢!

相对较新的 R 用户

1
library(dplyr)
left_join(FirstTable, 
          LookupTable %>% group_by(cusip) %>% slice(1))
Joining, by = "cusip"
# A tibble: 3 x 3
  cusip Datecode Name        
  <chr> <chr>    <chr>       
1 AAA1  201912   Facebook Inc
2 AAA2  202003   Apple       
3 AAA3  202006   Amz  
0

快速data.table方法

library(data.table)
#make them data.tables
setDT(LookupTable); setDT(FirstTable)
#perform update join
FirstTable[ LookupTable, Name := i.Name, on = .(cusip)]
#    cusip Datecode      Name
# 1:  AAA1   201912  Facebook
# 2:  AAA2   202003 Apple INC
# 3:  AAA3   202006    Amazon

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(612)
\ s和\t有什么区别
上一篇
AzureADMDM注册期间出现80192ee7错误
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(55条)