我以角色向量的形式提取了一些棒球击球阵容 e.g
[1] "Yunel Escobar" "Kelly Johnson" "Jose Bautista" "Adam Lind"
[5] "Edwin Encarnacion" "Brett Lawrie" "Eric Thames" "Colby Rasmus"
[9] "Jeff Mathis"
并在R中创建了一个数据帧allLineups,列出了162场比赛中每场比赛的击球顺序
头(allLineups)
player order game
Yunel Escobar 1 1
Kelly Johnson 2 1
Jose Bautista 3 1
Adam Lind 4 1
Edwin Encarnacion 5 1
Brett Lawrie 6 1
我现在想做一些包括以下
的分析a)在赛季中,击球阵容中任何特定的9名球员的频率
b)完全相同的阵容(包含顺序)发生了多少次
c)两个指定球员多久出现在一起
d)对于任何指定的游戏,它的阵容与第一场比赛的阵容相比如何
我很欣赏有关如何处理这些查询的一些指导
答案 0 :(得分:2)
在下面的评论中添加sort
次来提供OP请求的内容;
player <- c("Yunel Escobar" , "Kelly Johnson" , "Jose Bautista" , "Adam Lind" ,
"Edwin Encarnacion", "Brett Lawrie" , "Eric Thames" , "Colby Rasmus" ,
"Jeff Mathis")
# create two games with different lineups
allLineups <- data.frame(player=c(player, rev(player)) , order=1:9, game=rep(1:2, each=9))
#construct a lineup
with(allLineups, tapply(player, game, function(x) paste0(sort(x), collapse="/") ) )
# tabulate the values for lineups
table( with(allLineups, tapply(player, game, function(x) paste0(sort(x), collapse="/") ) ) )
您可以通过以下方式缩短阵容列表:
allLineups$shortplyr <- sub("^(.).+\\ (.{4}).*$", '\\1_\\2', allLineups$player)
# ------------
table( with(allLineups, tapply(shortplyr, game, function(x) paste0(sort(x), collapse="/") ) ) )
A_Lind/B_Lawr/C_Rasm/E_Enca/E_Tham/J_Baut/J_Math/K_John/Y_Esco
2
OP清楚地不想要这个。:
如果没有订购阵容,你应该用:
排序allLineups <- with( allLinups, allLineups[ order(game, order) , ]