Как назначить значения дня года, начиная с произвольной даты, и позаботиться об отсутствующих значениях

Это фактически удаляет содержимое из списка, но не заменяет старую метку новым пустым списком:

del lst[:]

Вот пример:

lst1 = [1, 2, 3]
lst2 = lst1
del lst1[:]
print(lst2)

Для полноты назначение среза имеет такой же эффект:

lst[:] = []

Его также можно использовать для сокращения части списка при одновременном замене части (но это не из

Обратите внимание, что выполнение lst = [] не пустет список, просто создает новый объект и связывает его с переменной lst, но старый список будет по-прежнему иметь одинаковый элементы и эффект будут очевидны, если у него были другие переменные привязки.

1
задан rahul 18 January 2019 в 13:59
поделиться

1 ответ

Вы можете создать строку для каждой даты, используя функцию complete из пакета tidyr.

Сначала я создаю фрейм данных с некоторыми примерами данных:

df <- data.frame(
  depdate = as.Date(c('2017-11-02', '2017-11-03', '2017-11-05')),
  bookings = c(43, 27, 27)
)

Затем я выполняю две операции. Во-первых, используя tidyr::complete, я указываю все даты, которые я хочу в моем анализе. Я могу сделать это, используя seq.Date, создавая последовательность от первого до последнего дня.

Как только это будет сделано, столбец day_of_year будет просто равен номеру строки.

df_complete <- tidyr::complete(df,
  depdate = seq.Date(from = min(df$depdate), to = max(df$depdate), by = 1)
)

df_complete$day_of_year <- 1:nrow(df_complete)

> df_complete
#> # A tibble: 4 x 3
#>   depdate    bookings day_of_year
#>   <date>        <dbl>       <int>
#> 1 2017-11-02       43           1
#> 2 2017-11-03       27           2
#> 3 2017-11-04       NA           3
#> 4 2017-11-05       27           4

Эквивалентное решение с оператором трубы из dplyr:

df %>%
  complete(depdate = seq.Date(from = min(df$depdate), to = max(df$depdate), by = 1)) %>%
  mutate(days_of_year = row_number())
0
ответ дан A. Stam 18 January 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: