首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用if-statement代替我的慢速嵌套循环?

用if-statement代替我的慢速嵌套循环?
EN

Stack Overflow用户
提问于 2019-04-11 03:36:30
回答 2查看 37关注 0票数 0

我得到了两个大数据帧(df有7038行,df2有14076行)。我想比较它们并在某些字段相同的情况下添加值。

我尝试了一个带有if语句的嵌套for循环,但它需要几个小时才能完成。

df:

Date       HomeTeam     AwayTeam      FTR   GoalScoreHome GoalScoreAway
   <date>     <chr>           <chr>         <chr> <chr>         <chr>        
 1 1995-08-18 For Sittard     PSV Eindhoven A     NA            NA           
 2 1995-08-19 Go Ahead Eagles Groningen     D     NA            NA           
 3 1995-08-19 Roda JC         Heerenveen    D     NA            NA           
 4 1995-08-19 Willem II       Sparta        H     NA            NA           
 5 1995-08-20 Ajax            Utrecht       H     NA            NA           
 6 1995-08-20 Feyenoord       Vitesse       H     NA            NA           
 7 1995-08-20 Graafschap      Nijmegen      A     NA            NA           
 8 1995-08-20 Volendam        Twente        A     NA            NA           
 9 1995-08-20 Waalwijk        NAC Breda     D     NA            NA           
10 1995-08-23 Groningen       For Sittard   H     NA            NA   

df2:

Round Date        Team   GDPerGame      PointsPerGame      GoalScore5.2
1     1 1995-08-20 Ajax          4             3           NA
2     2 1995-08-25 Ajax          6             3           NA
3     3 1995-09-10 Ajax          4             3           NA
4     4 1995-09-17 Ajax          4             3           NA
5     5 1995-09-20 Ajax          4             3           NA
6     6 1995-09-24 Ajax          1             3           22

我使用了以下循环:

for (i in 1:nrow(df)) {
  for (j in  1:nrow(df2)) {
    if(df$HomeTeam[i] == df2$Team[j] & df$Date[i] == df2$Date[j] ){

      df$GoalScoreHome[i] = df2$GoalScore5.2[j]
    }
    else if(df$AwayTeam[i] == df2$Team[j] & df$Date[i] == df2$Date[j]){
      df$GoalScoreAway[i] = df2$GoalScore5.2[j]
    }

  }

}

这可以按预期工作,但正如我之前所说的,它太慢了

我发现了一些嵌套循环的替代方法,但其中没有if语句。有没有人知道更好、更快的替代方案?

EN

回答 2

Stack Overflow用户

发布于 2019-04-11 03:43:38

我建议研究一下merge命令。

票数 0
EN

Stack Overflow用户

发布于 2019-04-11 04:00:44

看起来像是合并的问题。您可以先按日期合并两个数据集,然后再按团队合并。如果你熟悉SQL,你也可以使用RSQLite包来做这件事,它甚至更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55620108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档