Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配2个DF';s乘2列R_R - Fatal编程技术网

匹配2个DF';s乘2列R

匹配2个DF';s乘2列R,r,R,如果我有两个DF的值相同,但顺序不同,我可以创建第三个DF,第二个DF的值与第一个匹配吗 例: HomeTeam我们可以使用match来获取排列行的索引 library(dplyr) df2 %>% arrange(match(HomeTeam, df1$HomeTeam), match(AwayTeam, df1$AwayTeam)) 此外,如果有更多的列,则最好粘贴这些列并进行单个匹配 library(stringr) df2 %>% arrange(ma

如果我有两个DF的值相同,但顺序不同,我可以创建第三个DF,第二个DF的值与第一个匹配吗

例:


HomeTeam我们可以使用
match
来获取
排列
行的索引

library(dplyr)
df2 %>% 
    arrange(match(HomeTeam, df1$HomeTeam), match(AwayTeam, df1$AwayTeam))

此外,如果有更多的列,则最好粘贴这些列并进行单个匹配

library(stringr)
df2 %>%
     arrange(match(str_c(HomeTeam, AwayTeam), str_c(df1$HomeTeam, df1$AwayTeam)))
注意:对于大型数据集,
match
可能比join更快,因为我们正在从另一个数据集中提取一个列或向量以用于
匹配

library(stringr)
df2 %>%
     arrange(match(str_c(HomeTeam, AwayTeam), str_c(df1$HomeTeam, df1$AwayTeam)))

或者另一个选项是
data.table
join,这也会很快

library(data.table)
setDT(df2)[setDT(df1), on = .(HomeTeam, AwayTeam)]
#     HomeTeam   AwayTeam
#1:   Liverpool    Burnley
#2: Southampton   Brighton
#3:     Arsenal Man United
#4:     Everton  Tottenham
#5:     Chelsea   Man City

我们可以使用
df2
左连接
/
内连接
df1
,以与
df1
相同的顺序获得
df2
数据

dplyr::left_join(df1, df2, by = c("HomeTeam", "AwayTeam"))

# A tibble: 5 x 2
#  HomeTeam    AwayTeam  
#  <chr>       <chr>     
#1 Liverpool   Burnley   
#2 Southampton Brighton  
#3 Arsenal     Man United
#4 Everton     Tottenham 
#5 Chelsea     Man City  
dplyr::left_join(df1,df2,by=c(“HomeTeam”,“AwayTeam”))
#一个tibble:5x2
#阿瓦泰姆主队
#              
#1利物浦伯恩利
#南安普敦布莱顿2号
#3阿森纳人联队
#4埃弗顿托特纳姆
#5切尔西曼城

df3和df1看起来一样。所以,在这种情况下,您不需要
df2%>%安排(match(HomeTeam,df1$HomeTeam),match(AwayTeam,df1$AwayTeam))
@Akrun-谢谢,我会试试的。在这两个DF中还有更多的列(虽然它们有不同的名称),但我会看看是否可以匹配它们。如果我需要额外的帮助,我会编辑我的开场白。谢谢,非常感谢。第二种选择效果很好。我对这一点还很陌生,所以无论谁否决了你,我都会向他道歉。我再次投票,谢谢这帮我把我的数据整理了十倍。@ScoutingForJay它不是针对你的。没关系。谢谢