r - IF - R 中用于体育书籍的返回函数
问题描述
我有以下数据集(pre_df),我想要:
当selection = home - 在新列中返回APL(在本例中为 Home_APL)。
当selection = away -在新列中返回APL 。
当selection = Draw -在新列中返回APL
我已经完成了第一个示例(Home_APL),但是当我为 Away_APL 运行相同的 IF 函数时,它不起作用。
#Home_APL
for (row in 1:nrow(pre_df))
{
if(pre_df$selection[row] == pre_df$home[row])
{
pre_df$Home_APL[row] = pre_df$APL[row]
}
}
#Away_APL
for (row in 1:nrow(pre_df))
{
if(pre_df$selection[row] == pre_df$away[row])
{
pre_df$Away_APL[row] = pre_df$APL[row]
}
}
解决方案
就像@r2evans 所说,让您的问题可重现。并在您说“它不起作用”时指定错误是什么。
它失败的原因可能是因为您正在添加仅填充了一些行的新列。所以 R 不知道如何填充缺失的行,你会得到一个
Error in `$<-.data.frame`(`*tmp*`, "Away_APL", value = c(NA, 10.4752232550593 :
replacement has 2 rows, data has 1153
错误。
为了解决这个问题,您可以先手动创建两个列,然后再填充匹配的行。
pre_df$Home_APL <- 0
pre_df$Away_APL <- 0
然后运行你的循环,
# > head(pre_df, 10)
# X date eventId selection home away toverByPrice turnover APL Home_APL Away_APL
# 1 1 01/01/2017 4414294 Arsenal Arsenal Crystal Palace 61883.68 45861.26 1.349367 1.349367 0.000000
# 2 2 01/01/2017 4414294 Crystal Palace Arsenal Crystal Palace 184655.35 17627.82 10.475223 0.000000 10.475223
# 3 3 01/01/2017 4414294 Draw Arsenal Crystal Palace 41557.02 7540.92 5.510868 0.000000 0.000000
# 4 4 01/01/2017 4414399 Draw Watford Tottenham 13851.13 3517.82 3.937418 0.000000 0.000000
# 5 5 01/01/2017 4414399 Tottenham Watford Tottenham 184797.52 114681.12 1.611403 0.000000 1.611403
# 6 6 01/01/2017 4414399 Watford Watford Tottenham 73569.21 12606.46 5.835834 5.835834 0.000000
# 7 7 01/02/2017 4413713 Draw Manchester Utd Hull 8293.93 1130.00 7.339761 0.000000 0.000000
# 8 8 01/02/2017 4413713 Hull Manchester Utd Hull 130880.46 7150.82 18.302860 0.000000 18.302860
# 9 9 01/02/2017 4413713 Manchester Utd Manchester Utd Hull 17798.90 14842.22 1.199207 1.199207 0.000000
# 10 10 01/02/2017 4413852 Draw Stoke Everton 32646.77 9561.08 3.414548 0.000000 0.000000
推荐阅读
- python - 如何对scipy中的几个矩阵值应用约束?
- button - 当我单击按钮时,出现错误:尝试在空实例的基础“空实例”中调用函数“显示”
- python - 如何使用 /tmp/ 读取 App Engine 上的文件?我得到 [Errno 2] 没有这样的文件或目录
- postgresql - 将主机名转换为地址时,pgAdmin 外部数据包装器错误
- ios - Swift 5 使用属性文本向 UILabel 添加 alpha
- firebase - Firebase 托管标头 firebase.json 不起作用
- c# - Xamarin.Forms 中的模块
- sql - 选择 Distinct Records 并计算与记录相关的其他列
- python - 计算列表最后一天和今天之间的天数
- pip - 通过 sh 脚本自动创建 pyenv