У меня есть следующий фрейм данных:
df <- data.frame(stringsAsFactors=FALSE,
ID = c(2016070707, 2016070707, 2016070707, 2017080808, 2017080808,
2017080808, 2017080808),
team_name = c("Harlequins", "Harlequins", "Harlequins", "Bristol Rugby",
"Bristol Rugby", "Bristol Rugby", "Bristol Rugby"),
player_name = c("Karl Dickson", "Tim Swiel", "Alofa Alofa",
"Jason Woodward", "Jack Wallace", "Will Hurrell",
"Tusi Pisi"),
DGC = c(7, 5, 0, 3, 0, 8, 9),
MR = c(3, 8, 31, 25, 0, 85, 0),
CB = c(2, 9, 1, 13, 0, 0, 0)
)
, который я хотел бы преобразовать в широкую версию:
new_df <- data.frame(stringsAsFactors=FALSE,
ID = c(2016070707, 2017080808),
team_name = c("Harlequins", "Bristol Rugby"),
player_1 = c("Karl Dickson", "Jason Woodward"),
player_2 = c("Tim Swiel", "Jack Wallace"),
player_3 = c("Alofa Alofa", "Will Hurrell"),
player_4 = c(NA, "Tusi Pisi"),
DGC_1 = c(7, 3),
DGC_2 = c(5, 0),
DGC_3 = c(0, 8),
DGC_4 = c(NA, 9),
MR_1 = c(3, 25),
MR_2 = c(8, 0),
MR_3 = c(31, 85),
MR_4 = c(NA, 0),
CB_1 = c(2, 13),
CB_2 = c(9, 0),
CB_3 = c(1, 0),
CB_4 = c(NA, 0)
)
Однако, как вы видите, в первой команде 3 игрокаа во второй команде 4 игрока.Как я могу транспонировать df в new_df , а также создавать такие дополнительные столбцы, как player_4 , DGC_4 в случае, если вкоманда.И разница будет компенсирована "NA" (как в new_df).