R'de günlük veriler aylık ve yıllık veriler halinde nasıl toplanır?
Bazen günlük verileri R’de haftalık, aylık veya yıllık veriler halinde toplamak isteyebilirsiniz.
Bu eğitimde lubridate ve dplyr paketlerini kullanarak bunun nasıl kolayca yapılacağı açıklanmaktadır.
Örnek: Günlük verileri R’de toplama
R’de bir ürünün ardışık 100 günlük bir süre boyunca günlük satışlarını gösteren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
#make this example reproducible set.seed(1) #create data frame df <- data.frame(date = as.Date (" 2020-12-01 ") + 0:99, sales = runif (100, 20, 50)) #view first six rows head(df) dirty date 1 2020-12-01 27.96526 2 2020-12-02 31.16372 3 2020-12-03 37.18560 4 2020-12-04 47.24623 5 2020-12-05 26.05046 6 2020-12-06 46.95169
Bu verileri toplamak için lubridate paketinin aşağıdaki sözdizimini kullanan Floor_date() fonksiyonunu kullanabiliriz:
floor_date (x, unit)
Altın:
- x: tarih nesnelerinin bir vektörü.
- birim: yuvarlanacak zaman birimi. Seçenekler arasında saniyeler, dakikalar, saatler, günler, haftalar, aylar, iki ayda bir, çeyrekler, yarım yıllar ve yıllar bulunur.
Aşağıdaki kod parçacıkları, haftaya, aya ve yıla göre ortalama satışları bulmak için bu işlevin dplyr paketindeki group_by() ve Summary() işlevleriyle nasıl kullanılacağını gösterir:
Haftalık ortalama satışlar
library (lubridate)
library (dplyr)
#round dates down to week
df$week <- floor_date (df$date, " week ")
#find average sales per week
df %>%
group_by (week) %>%
summarize (mean = mean (sales))
# A tibble: 15 x 2
week means
1 2020-11-29 33.9
2 2020-12-06 35.3
3 2020-12-13 39.0
4 2020-12-20 34.4
5 2020-12-27 33.6
6 2021-01-03 35.9
7 2021-01-10 37.8
8 2021-01-17 36.8
9 2021-01-24 32.8
10 2021-01-31 33.9
11 2021-02-07 34.1
12 2021-02-14 41.6
13 2021-02-21 31.8
14 2021-02-28 35.2
15 2021-03-07 37.1
Aylık ortalama satış
library (lubridate)
library (dplyr)
#round dates down to week
df$month <- floor_date (df$date, " month ")
#find average sales by month
df %>%
group_by (month) %>%
summarize (mean = mean (sales))
# A tibble: 4 x 2
month mean
1 2020-12-01 35.3
2 2021-01-01 35.6
3 2021-02-01 35.2
4 2021-03-01 37.0
Yıllık ortalama satış
library (lubridate)
library (dplyr)
#round dates down to week
df$year <- floor_date (df$date, " year ")
#find average sales by month
df %>%
group_by (year) %>%
summarize (mean = mean (sales))
# A tibble: 2 x 2
year means
1 2020-01-01 35.3
2 2021-01-01 35.7
Ortalamaya göre toplamayı seçtiğimizi ancak medyan, mod, maksimum, minimum vb. gibi istediğimiz herhangi bir özet istatistiği kullanabileceğimizi unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de grup başına ortalama nasıl hesaplanır
R’de kümülatif toplamlar nasıl hesaplanır
R’de bir zaman serisi nasıl çizilir