0

我以字符向量的形式提取了一些棒球击球阵容,例如

[1] "Yunel Escobar"     "Kelly Johnson"     "Jose Bautista"     "Adam Lind"        
[5] "Edwin Encarnacion" "Brett Lawrie"      "Eric Thames"       "Colby Rasmus"     
[9] "Jeff Mathis"

并在 R 中创建了一个数据框 allLineups,其中列出了 162 场比赛赛季中每场比赛的击球顺序

头(所有阵容)

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) 对于任何指定的游戏,它的阵容与第一场比赛的阵容相比如何

我很感激有关如何回答这些查询的一些指导

4

1 回答 1

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) , ]
于 2012-08-08T02:16:01.623 回答