Пара-манипулирование строками в data.frame

wake_wake спросил: 11 июня 2018 в 10:06 в: r

У меня есть данные о нескольких тысячах баскетболистов США за несколько лет.

Каждый баскетболист имеет уникальный идентификатор. Известно, для какой команды и на какой позиции они играют в конкретном году, так же, как макет данных df ниже:

df <- data.frame(id = c(rep(1:4, times=2), 1), 
             year = c(1, 1, 2, 2, 3, 4, 4, 4,5),
             team = c(1,2,3,4, 2,2,4,4,2),
             position = c(1,2,3,4,1,1,4,4,4))
> df
  id year team position
1  1    1    1        1
2  2    1    2        2
3  3    2    3        3
4  4    2    4        4
5  1    3    2        1
6  2    4    2        1
7  3    4    4        4
8  4    4    4        4
9  1    5    2        4

Что такое эффективный способ для управления df в new_df ниже?

> new_df
  id move time position.1 position.2 year.1 year.2
1  1    0    2          1          1      1      3
2  2    1    3          2          1      1      4
3  3    0    2          3          4      2      4
4  4    1    2          4          4      2      4
5  1    0    2          1          4      3      5

В new_df сравнивается первое появление баскетболиста ко второму вхождению, записано, переключились ли игроки в группы и сколько времени потребовалось игроку, чтобы сделать переключатель.

Примечание:

  • В реальных данных некоторые баскетболисты встречаются более двух раз и могут играть за несколько команд и на нескольких позициях.

  • В таком случае новая строка в new_df, который сравнивает каждое дополнительное появление игрока с только предыдущим вхождением.

Изменить: я думаю, что это не довольно простой reshape из-за причин, упомянутых в предыдущих двух предложениях. Чтобы прояснить это, я добавил дополнительное появление идентификатора игрока 1 в макет данных.

Любая помощь приветствуется и оценивается!


0 ответов