Я импортировал таблицу (Table1) в следующем формате:
ID Name Age Start Status1 Status2 Status3 Status4 Status5 Status6
01 John 45 2011 25 13 13 12 34 35
02 Mike 23 2017 12 15 18 45 32 25
03 Peter 34 2019 34 12 15 19 24 27
04 Sarah 21 2020 45 46 47 48 49 50
И я создал другую таблицу (Table2), которая выглядит следующим образом:
ID Name Age Start Year Value
02 Mike 23 2017 3 24
03 Peter 34 2019 1 11
03 Peter 34 2019 2 13
03 Peter 34 2019 3 13
04 Sarah 21 2020 1 42
04 Sarah 21 2020 2 43
04 Sarah 21 2020 3 44
Table2 содержитпрогнозируемые значения на первые 3 года после и включая начало, НО только в том случае, если три года еще не прошли (по состоянию на текущий год, 2019).Таким образом, в приведенном выше примере, ID 01 уже более 3 лет прошло их начальное значение, поэтому не имеют никаких прогнозов;Идентификатор 02 через два года прошел их начальное значение, поэтому имеет один прогноз;Идентификаторы 03 и 04 - нулевые годы, прошедшие начальное значение, поэтому у нас есть три прогноза.
Мне нужно переместить значения из таблицы 2 в таблицу 1, заменив значения состояния и сдвинув их вправо.Финальная таблица должна выглядеть следующим образом:
ID Name Age Start Status1 Status2 Status3 Status4 Status5 Status6
01 John 45 2011 25 13 13 12 34 35
02 Mike 23 2017 24 12 15 18 45 32
03 Peter 34 2019 11 13 13 34 12 15
04 Sarah 21 2020 42 43 44 45 46 47
Как можно надеяться, строка для идентификатора 01 остается неизменной.Для идентификатора 02 старые значения статуса сместились на один вправо, а статус1 был заменен.Для идентификаторов 03 и 04 старые значения Status сместились на три позиции вправо, а Status1 на Status3 были заменены.Как видите, старые значения, которые были от Status4 до Status6, были удалены.
Я застрял в этом.До сих пор я пытался сформулировать некоторые правила для замен следующим образом:
1) Если Год больше 3 лет от текущего года (2019), оставьте названия столбцов Статус такими, как они есть.например, строка 1 таблицы 1.
2) Если значение «Пуск» равно 2019 или выше, переименуйте столбцы «Состояние», добавив 3. Например, в строках 3 и 4 таблицы 1 «Состояние1» следует переименовать в «Status4» и т. д.Последние 3 столбца состояния (от Status4 до Status6) будут удалены.
3) Если Start находится в пределах 3 лет с 2019 года (т. Е. С 2017 по 2019), переименуйте столбцы Status, добавив разницу между 2016 и Start.,например, в строке 2 таблицы 1 Status1 будет переименован в Status2 и так далее.Последний столбец (Status6) будет удален.
Я мог бы закодировать их, используя if / else, но я не уверен, как разместить их в конвейере обработки данных с помощью select () и left_join () для переносаэти изменения успешно.Я использую R, но мог бы также использовать SQL, если бы это было проще.Любая помощь будет высоко ценится.
ps Я ценю, что результирующая таблица находится в странном формате, но, к сожалению, это то, что мне нужно произвести.