Переназначение значений столбцов в группах переменных - PullRequest
0 голосов
/ 06 марта 2019

У меня есть этот конкретный фрейм данных, и я хотел бы провести некоторые манипуляции с этим. По сути, я хочу разбить значения таким образом, чтобы каждая запись в столбце зарплаты перемещалась вверх, чтобы заменить зарплату за предыдущий сезон.

Как мне это сделать? через iloc или? Если в предыдущем сезоне нет записи, я бы хотел оставить ее нетронутой (см. Строку 3).

Входные данные:

   season                       url  salary
1 2016-17 /players/a/abrinal01.html 5994764
2 2017-18 /players/a/abrinal01.html 5725000
3 2008-09 /players/a/ackeral01.html  711517
4 2012-13   /players/a/acyqu01.html  665000
5 2013-14   /players/a/acyqu01.html  788872
6 2014-15   /players/a/acyqu01.html  915243

Выходной кадр данных:

   season                       url  salary
1 2016-17 /players/a/abrinal01.html 5725000
2 2017-18 /players/a/abrinal01.html    NA
3 2008-09 /players/a/ackeral01.html  711517
4 2012-13   /players/a/acyqu01.html  788872
5 2013-14   /players/a/acyqu01.html  915243
6 2014-15   /players/a/acyqu01.html    NA

1 Ответ

1 голос
/ 06 марта 2019

Мы можем использовать lead из dplyr при условии, что season упорядочено, как показано в примере

library(dplyr)

df1 %>%
  group_by(url) %>%
  mutate(salary = if (n() > 1) lead(salary) else salary)

#   season  url                        salary
#  <fct>   <fct>                       <int>
#1 2016-17 /players/a/abrinal01.html 5725000
#2 2017-18 /players/a/abrinal01.html      NA
#3 2008-09 /players/a/ackeral01.html  711517
#4 2012-13 /players/a/acyqu01.html    788872
#5 2013-14 /players/a/acyqu01.html    915243
#6 2014-15 /players/a/acyqu01.html        NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...