Присвойте значения записи в t-1 для всех случаев - PullRequest
1 голос
/ 08 февраля 2020

У меня есть набор данных о трансферах футболистов, в котором есть такие переменные, как год трансфера (1992-2019) и плата за перевод. Я могу рассчитать максимальный трансфер для каждого года как переменную для каждого игрока, но не могу понять, как у меня могла бы быть запись трансфера в момент времени t-1 в качестве переменной.

Если игрок X был для пример, переданный в 2019 году, а запись о переводе (самая высокая комиссия за перевод) была сделана в 2017 году, в ней должна быть переменная, показывающая эту плату (t-1). Если игрок Y был перенесен в 2015 году, а запись тогда была от 2012 года, он должен иметь эту плату за перевод с 2012 года как переменную.

Вот ссылка на образец изображения

1 Ответ

0 голосов
/ 10 февраля 2020

Вот синтаксис, который легко понять, поскольку он идет шаг за шагом. Вероятно, он может быть написан более синтетически c, но давайте оставим читабельность приоритетом:

* Sort the cases in chronological order, for each player, as we will parse the records one by one.
sort cases by name year (A).

* create the MAX_FEE variable, and assign a starting value.
compute MAX_FEE=0.
* $casenum will help us navigate through the records. Combined with the LAG function (which by default looks into the previous record) we are simulating a record by record parsing.
* start with the first record.
if $casenum=1 MAX_FEE=fee_cleaned.

* then move onto the others.
do if $casenum>1.
    *setting the initial MAX_FEE for the first transfer of a player (i.e. - the name changes, compared to previous record).
    if name<>lag(name) MAX_FEE=fee_cleaned.
    * for the same player, comparing the current transfer's fee with the current MAX_FEE (i.e. - the MAX_FEE from the previous record).
    if name=lag(name) and fee_cleaned > lag(MAX_FEE) MAX_FEE=fee_cleaned.
    if name=lag(name) and fee_cleaned <= lag(MAX_FEE) MAX_FEE=lag(max_fee).
end if.
EXECUTE.
...