用 R 中的向量替换 data.frame 的某些值
Replace some values of a data.frame with a vector in R
我又来了,遇到了新的 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
是的,数据集是关于足球的,您可以在 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
很明显,整个dataframe中只有一行"combination"在向量c中有HomeTeam和AwayTeam。
在循环的每次迭代中,我更改 HomeTeam 和 AwayTeam,以及值。
我想做一种加入,但我真的不知道该怎么做。
导致我出现问题的是主队和客队的 "check"。
感谢回复中的指点!
我自己解决了这个问题!
我 post 如果有人需要帮助,我会这样做。
基本上我提取了我的团队名称作为值,并"stored"它们在一个对象中
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
我又来了,遇到了新的 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
是的,数据集是关于足球的,您可以在 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
很明显,整个dataframe中只有一行"combination"在向量c中有HomeTeam和AwayTeam。 在循环的每次迭代中,我更改 HomeTeam 和 AwayTeam,以及值。
我想做一种加入,但我真的不知道该怎么做。 导致我出现问题的是主队和客队的 "check"。 感谢回复中的指点!
我自己解决了这个问题! 我 post 如果有人需要帮助,我会这样做。
基本上我提取了我的团队名称作为值,并"stored"它们在一个对象中
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