用R中的向量替换data.frame的某些值

时间:2018-12-07 17:14:25

标签: r for-loop vector cbind

我又遇到了一个新的R问题。

基本上,我处于for循环内,并且在代码的最后几行中遇到麻烦。

我有一个像这样的数据集:

>>> pd.concat([source1, source2]).groupby('key', as_index=False).sum()
  key  value
0   a      1
1   b      5
2   c      0

是的,数据集是关于足球的,您可以在http://www.football-data.co.uk/italym.php上免费下载。

但是,我为每个匹配项创建了多个索引,并将它们放在向量c中

           > head(myDB)
    # A tibble: 6 x 11
      Div   Date  HomeTeam AwayTeam  FTHG  FTAG FTR   Index1     Index2  Index3     Index4

1 I1    20/0… Juventus Fiorent…     2     1 H              0          0            0           0
2 I1    20/0… Roma     Udinese      4     0 H              0          0            0           0
3 I1    21/0… Atalanta Lazio        3     4 A              0          0            0           0
4 I1    21/0… Bologna  Crotone      1     0 H              0          0            0           0
5 I1    21/0… Chievo   Inter        2     0 H              0          0            0           0
6 I1    21/0… Empoli   Sampdor…     0     1 A              0          0            0           0

正如我之前所说,我处于for循环中。

我想在每个周期中,计算机找到HomeTeam和AwayTeam中与C的前两个值匹配的行,然后将C的其余值(indxes1,indexs2,indexs3,indexs4)放入其中。最后4列。

编辑:基本上,我正在寻找这样的输出:

c <- c(HomeTeam, AwayTeam, Val1, Val2, Val3, Val4)

显然,在整个数据帧中,向量c中只有HomeTeam和AwayTeam的“组合”。 在该循环的每次迭代中,我都会更改HomeTeam和AwayTeam及其值。

我想进行某种加入,但是我真的不知道该怎么做。 导致我出现问题的是HomeTeam和客队的“检查”。 感谢您的答复!

1 个答案:

答案 0 :(得分:0)

我自己解决了问题! 如果有其他需要帮助的人,我会发布它。

基本上,我将团队名称提取为值并将其“存储”在对象中

teams <- unique(DB_Of_The_Match$home_team_name)
teams[2] <- unique(DB_Of_The_Match.2$away_team_name)

然后我在Mydb中提取了要分析的匹配项的行

row_sub <- which(MYDB$HomeTeam==teams_2[1] & MYDB$AwayTeam==teams_2[2])

然后我将零替换为我创建的索引

c <- c(Index1, Index2, Index3, Index4)

MyDB[row_sub, 23:30] <- c

> head(myDB)
# A tibble: 6 x 11
  Div   Date  HomeTeam AwayTeam  FTHG  FTAG FTR       Index1     Index2  Index3     Index4

1 I1    20/0… Juventus Fiorent…     2     1 H              0          0            0           0
2 I1    20/0… Roma     Udinese      4     0 H              0          0            0           0
3 I1    21/0… Atalanta Lazio        3     4 A              0          0            0           0
4 I1    21/0… Bologna  Crotone      1     0 H              0          0            0           0
5 I1    21/0… Chievo   Inter        2     0 H              0          0            0           0
6 I1    21/0… Empoli   Sampdor…     0     1 A              Val1        Val2       Val3        Val4