У меня длинный фрейм данных с решениями игроков, которые работали в группах. Мне нужно преобразовать данные таким образом, чтобы в каждой строке (отдельном наблюдении) содержались решения всех членов группы (поэтому мы в основном можем видеть, являются ли они взаимозависимыми).
Скажем, генерирующий код:
group_id <- c(rep(1, 3), rep(2, 3))
player_id <- c(rep(seq(1, 3), 2))
player_decision <- seq(10,60,10)
player_contribution <- seq(6,1,-1)
df <-
data.frame(group_id, player_id, player_decision, player_contribution)
Итак, исходные данные выглядят так:
group_id player_id player_decision player_contribution
1 1 1 10 6
2 1 2 20 5
3 1 3 30 4
4 2 1 40 3
5 2 2 50 2
6 2 3 60 1
Но мне нужно преобразовать их в wide
для каждогогруппа, но только для некоторых из этих переменных (в этом примере специально для player_contribution
, но таким образом, что остальная часть данных остается. Таким образом, заголовок преобразованных данных будет:
data.frame(group_id=c(1,1),
player_id=c(1,2),
player_decision=c(10,20),
player_1_contribution=c(6,6),
player_2_contribution=c(5,5),
player_3_contribution=c(4,6)
)
group_id player_id player_decision player_1_contribution player_2_contribution player_3_contribution
1 1 1 10 6 5 4
2 1 2 20 6 5 6
Я подозреваю, что мне нужно group_by
в dplyr
, а затем как-то gather
на группу, но только для player_contribution
(или вектора переменных). Но я действительно понятия не имею, как к нему подойти. Любые намеки приветствуются!