Создание новой строки в зависимости от даты в другом столбце

avatar
MichaelD
8 августа 2021 в 17:16
22
2
0

Сейчас я борюсь с задачей спора, и буду признателен за любую помощь.

См. DF

Переменная 1 Дата
P1 13.09.2020
P2 13.09.2020
P3 20.09.2020
P4 20.09.2020
P5 27.09.2020
P6 27.09.2020

Дата указана в формате %d/%m/%Y и в настоящее время упорядочена по убыванию, начиная с самой ранней даты. Мое намерение состоит в том, чтобы иметь самую раннюю дату как Игровую неделю 1, и когда дата меняется, ввод строки - Игровая неделя 2. См. мой предполагаемый DF:

Переменная 1 Дата Игровая неделя
P1 09.13.2020 Игровая неделя 1
P2 13.09.2020 Игровая неделя 1
P3 20.09.2020 Игровая неделя 2
P4 20.09.2020 Игровая неделя 2
P5 27.09.2020 Игровая неделя 3
P6 27.09.2020 Игровая неделя 3

Опять же, любая помощь приветствуется.

Спасибо

Источник

Ответы (2)

avatar
TarJae
8 августа 2021 в 17:53
1
library(dplyr)

df %>%
group_by(Date) %>%
mutate(Gameweek = paste("Gameweek", rownumber(), sep=" "))
avatar
norie
8 августа 2021 в 17:25
1

Вы можете использовать factor.

df$Gameweek <-factor(df$Date, labels='Gameweek')

Sample Output

  Var1       Date  Gameweek
1   P1 13/09/2020 Gameweek1
2   P2 13/09/2020 Gameweek1
3   P3 20/09/2020 Gameweek2
4   P4 20/09/2020 Gameweek2
5   P5 27/09/2020 Gameweek3
6   P6 27/09/2020 Gameweek3
MichaelD
8 августа 2021 в 17:31
0

Это решение присваивает игровой неделе случайное число, а не от 1 и далее. т.е. моя самая ранняя дата помечена как Gameweek19. Любые идеи?

norie
8 августа 2021 в 17:41
0

Можете ли вы опубликовать некоторые примеры данных, демонстрирующие это?

dcarlson
8 августа 2021 в 17:41
0

Не в вашем примере данных. Ваши реальные данные отсортированы по Date? Является ли Date символом или полем даты? Используйте dput(head(DF, 10)) для предоставления ваших данных, а не таблицы, в которой отсутствует важная информация.

MichaelD
8 августа 2021 в 18:45
0

Моя ошибка, поле даты было как символ, поэтому скорректировал его на as.date, и теперь это работает. Постараюсь использовать dput в последующих вопросах. Спасибо за помощь обоим.