Как создать подмножество по диапазону дат в R (с примерами)


Самый простой способ подмножить фрейм данных по диапазону дат в R — использовать следующий синтаксис:

df[df$date >= " some date " & df$date <= " some date", ]

В этом руководстве представлено несколько примеров использования этой функции на практике.

Пример 1: Подмножество между двумя датами

В следующем коде показано, как выбрать строки фрейма данных, которые попадают между двумя датами включительно:

#make this example reproducible
set.seed(0)

#create data frame
df <- data.frame(date = as.Date (" 2021-01-01 ") - 0:19,
 sales = runif (20, 10, 500) + seq (50, 69)^2)

#view first six rows
head(df)

 date sales
1 2021-01-01 2949.382
2 2020-12-31 2741.099
3 2020-12-30 2896.341
4 2020-12-29 3099.698
5 2020-12-28 3371.022
6 2020-12-27 3133.824

#subset between two dates, inclusive
df[df$date >= " 2020-12-25 " & df$date <= " 2020-12-28", ]

 date sales
5 2020-12-28 3371.022
6 2020-12-27 3133.824
7 2020-12-26 3586.211
8 2020-12-25 3721.891

Вам нужно только изменить знаки «больше» и «меньше», чтобы выбрать строки, которые попадают между двумя датами, исключая:

#make this example reproducible
set.seed(0)

#create data frame
df <- data.frame(date = as.Date (" 2021-01-01 ") - 0:19,
 sales = runif (20, 10, 500) + seq (50, 69)^2)

#subset between two dates, exclusive
df[df$date > " 2020-12-25 " & df$date < " 2020-12-28", ]

 date sales
6 2020-12-27 3133.824
7 2020-12-26 3586.211

Пример 2: Подмножество после определенной даты

В следующем коде показано, как выбрать строки фрейма данных, которые появляются после определенной даты:

#make this example reproducible
set.seed(0)

#create data frame
df <- data.frame(date = as.Date (" 2021-01-01 ") - 0:19,
 sales = runif (20, 10, 500) + seq (50, 69)^2)

#subset after a certain date
df[df$date >= " 2020-12-22", ]

 date sales
1 2021-01-01 2949.382
2 2020-12-31 2741.099
3 2020-12-30 2896.341
4 2020-12-29 3099.698
5 2020-12-28 3371.022
6 2020-12-27 3133.824
7 2020-12-26 3586.211
8 2020-12-25 3721.891
9 2020-12-24 3697.791
10 2020-12-23 3799.266
11 2020-12-22 3640.275

Пример 3: подмножество до определенной даты

В следующем коде показано, как выбрать строки фрейма данных, которые появляются до определенной даты:

#make this example reproducible
set.seed(0)

#create data frame
df <- data.frame(date = as.Date (" 2021-01-01 ") - 0:19,
 sales = runif (20, 10, 500) + seq (50, 69)^2)

#subset before a certain date
df[df$date < " 2020-12-22", ]

 date sales
12 2020-12-21 3831.928
13 2020-12-20 3940.513
14 2020-12-19 4315.641
15 2020-12-18 4294.211
16 2020-12-17 4612.222
17 2020-12-16 4609.873
18 2020-12-15 4850.633
19 2020-12-14 5120.034
20 2020-12-13 4957.217

Дополнительные ресурсы

Как построить временной ряд в R
Как извлечь год из даты в R
Как объединить ежедневные данные в ежемесячные и ежегодные в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.