首页 > 解决方案 > 使用另一个数据帧的行索引(条件)过滤数据帧并组合该行

问题描述

df_1 是一个测试数据集。它包含玩家姓名和技能(数值)。

df_1 <- data.frame(Name=c('S. Becker','A. Dabasse','S. Yesil','Jeon Se Jin','Nicholas Aldair'),
                   `Weak Foot`=c(3,3,3,4,3),
                   `Skill Moves`=c(3,2,3,3,3),
                   Crossing=c(60,29,35,51,66),
                   Finishing=c(57,59,71,65,75),
                   HeadingAccuracy=c(42,62,48,54,72),
                   ShortPassing=c(60,57,58,61,74) )


# Name              Weak.Foot   Skill.Moves Crossing  Finishing HeadingAccuracy ShortPassing
# S. Becker         3           3           60        57              42           60
# A. Dabasse        3           2           29        59              62           57
# S. Yesil          3           3           35        71              48           58
# Jeon Se Jin       4           3           51        65              54           61
# Nicholas Aldair   3           3           66        75              72           74

在使用模型(多逻辑)预测此数据的“位置”后,我得到了第二个数据帧 df_2。显然,由于这是一个 Logit 模型,它们是处于该特定位置的概率。( DEF FWD MID )


df_2 <- data.frame( DEF=c(5.73E-04,5.46E-06,2.08E-06,8.76E-06,6.56E-05),
                    FWD=c(0.4489639,0.9057274,0.9862491,0.9322038,0.8389187),
                    MID=c(0.55046347,0.09426718,0.01374878,0.06778743,0.16101569))


# DEF          FWD       MID
# 5.726046e-04 0.4489639 0.55046347
# 5.455446e-06 0.9057274 0.09426718
# 2.076482e-06 0.9862491 0.01374878
# 8.758119e-06 0.9322038 0.06778743
# 6.564988e-05 0.8389187 0.16101569

我只需要显示 df_1 的行和 df_2 的索引,其中MID的值位于前 2 位,以及包含此 MID 行。

期望的输出

# Name              Weak.Foot   Skill.Moves Crossing  Finishing HeadingAccuracy ShortPassing  MID 
# S. Becker         3           3           60        57              42           60         0.55046347
# Nicholas Aldair   3           3           66        75              72           74         0.16101569

标签: rdataframe

解决方案


尝试这个:

library(dplyr)
cbind(df_1,select(df_2,MID)) %>% 
  arrange(desc(MID)) %>% 
  slice(1:2)
#>              Name Weak.Foot Skill.Moves Crossing Finishing HeadingAccuracy ShortPassing       MID
#> 1       S. Becker         3           3       60        57              42           60 0.5504635
#> 2 Nicholas Aldair         3           3       66        75              72           74 0.1610157

推荐阅读