R 根据其他行/列组合中包含的信息创建新列
我有一个包含比赛信息(球队、对手)的数据框,以及该游戏在不同体育书籍中的赌注分布。我为每支球队准备了一排,所以每场比赛将有两排。例如,请参见以下数据框:R 根据其他行/列组合中包含的信息创建新列,r,R,我有一个包含比赛信息(球队、对手)的数据框,以及该游戏在不同体育书籍中的赌注分布。我为每支球队准备了一排,所以每场比赛将有两排。例如,请参见以下数据框: example <- data.frame(Team = c("Tennessee","Vanderbilt"), Opponent = c("Vanderbilt","Tennessee"), PointsBet = c(-13, 13),
example <- data.frame(Team = c("Tennessee","Vanderbilt"),
Opponent = c("Vanderbilt","Tennessee"),
PointsBet = c(-13, 13),
DraftKings = c(-12.5, 12.5))
Team Opponent PointsBet DraftKings
1 Tennessee Vanderbilt -13 -12.5
2 Vanderbilt Tennessee 13 12.5
还有一件事需要注意,我想复制的列并不总是相反的,所以我不能简单地将值乘以-1得到Opp_u.列。我们可以在
base R
中创建两列。创建一个位置索引,将“团队”与“对手”匹配,并使用该索引重新排列“PointsSet”和“DraftKings”中的列值,以创建新列
nm1 <- names(example)[3:4]
i1 <- with(example,match(Team, Opponent))
example[paste0("Opp_", nm1)] <- lapply(example[nm1], function(x) x[i1])
example
# Team Opponent PointsBet DraftKings Opp_PointsBet Opp_DraftKings
#1 Tennessee Vanderbilt -13 -12.5 13 12.5
#2 Vanderbilt Tennessee 13 12.5 -13 -12.5
nm1真棒!这似乎很有效:)谢谢你帮我学习新东西!
nm1 <- names(example)[3:4]
i1 <- with(example,match(Team, Opponent))
example[paste0("Opp_", nm1)] <- lapply(example[nm1], function(x) x[i1])
example
# Team Opponent PointsBet DraftKings Opp_PointsBet Opp_DraftKings
#1 Tennessee Vanderbilt -13 -12.5 13 12.5
#2 Vanderbilt Tennessee 13 12.5 -13 -12.5