【问题标题】:Replace some values of a data.frame with a vector in R用 R 中的向量替换 data.frame 的一些值
【发布时间】:2018-12-07 17:14:24
【问题描述】:

我又来了一个新的 R 问题。

基本上我在一个 for 循环中,我在代码的最后几行遇到了麻烦。

我有一个这样的数据集:

           > 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

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

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

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

正如我之前所说,我在一个 for 循环中。

我希望在每个循环中,计算机都会在 HomeTeam 和 AwayTeam 中找到与 C 的前两个值匹配的行,然后将 C 的剩余值(indxes1、indexes2、indexes3、indexes4)放入最后 4 列。

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

> 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

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

我想做一种加入,但我真的不知道该怎么做。 引起我问题的是主队和客队的“检查”。 感谢您的回复!

【问题讨论】:

  • c 是一个函数名。最好不要将函数名称分配给对象名称
  • 看起来您只是想进行连接,但如果没有(有问题的)示例输入和所需的输出,很难准确说出您需要什么。
  • 什么是 for 循环?你如何创建向量?
  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。在问题中包含dput()——不要让我们去其他地方下载数据。这只会让帮助你的事情变得更加困难。
  • 我刚刚编辑了我的问题以便更清楚

标签: r for-loop vector cbind


【解决方案1】:

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

基本上我将我的团队名称提取为值并将它们“存储”在一个对象中

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2021-09-22
    相关资源
    最近更新 更多