#r #dataframe
#r #фрейм данных
Вопрос:
У меня есть этот конкретный фрейм данных, и я хотел бы провести некоторые манипуляции с ним. В принципе, я хочу расположить значения в шахматном порядке таким образом, чтобы каждая запись в столбце зарплата перемещалась вверх, заменяя зарплату за предыдущий сезон.
Как мне это сделать? через 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:
Мы можем использовать lead
from, 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