Pencere İşlevleri: lag, lead, cumsum
Gruplar içinde hareketli toplamları, kaydırmaları ve birikimli toplamaları hesaplayın.
Pencere İşlevleri: lag, lead, cumsum, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Pencere İşlevleri Nedir?
Pencere işlevleri, verileri birleştirmeden geçerli satıra göre değerler hesaplar. summarize() işlevinin aksine tüm satırları korurlar. dplyr içinde pencere işlevleri mutate() içinde, çoğunlukla group_by() sonrasında kullanılır.
library(dplyr)
# Monthly revenue — we want to compare each month to previous
df <- data.frame(
month = 1:6,
revenue = c(100, 120, 95, 140, 160, 130)
)
print(df)lag() — Önceki Satırın Değeri
lag(x, n=1), geçerli satırdan n satır önceki değeri döndürür. İlk satır veya satırlar NA olur. Dönemden döneme değişimleri hesaplamak için idealdir.
library(dplyr)
df <- data.frame(
month = 1:6,
revenue = c(100, 120, 95, 140, 160, 130)
)
df %>%
mutate(
prev_revenue = lag(revenue),
change = revenue - lag(revenue),
pct_change = round(100 * (revenue - lag(revenue)) / lag(revenue), 1)
)lead() — Sonraki Satırın Değeri
lead(x, n=1), geçerli satırdan n satır sonraki değeri döndürür. Son satır veya satırlar NA olur. Geçerli değerin gelecekteki değerlerle karşılaştırmasını hesaplamak için kullanışlıdır.
library(dplyr)
df <- data.frame(
month = 1:5,
revenue = c(100, 120, 95, 140, 160)
)
df %>%
mutate(
next_month = lead(revenue),
next_2_months = lead(revenue, n = 2),
will_increase = revenue < lead(revenue)
)cumsum() ve cumprod()
cumsum(x), ilerleyen toplamı (birikimli toplamı) hesaplar. cumprod(x), birikimli çarpımı hesaplar. Her ikisi de mutate() içinde sorunsuz çalışan temel R işlevleridir.
library(dplyr)
df <- data.frame(
month = 1:6,
revenue = c(100, 120, 95, 140, 160, 130)
)
df %>%
mutate(
running_total = cumsum(revenue),
growth_factor = round(cumprod(1 + (revenue - 100) / 100), 3)
)cummax() ve cummin()
cummax(x), o ana kadar görülen en yüksek değeri izleyerek ilerleyen maksimumu hesaplar. cummin(x), ilerleyen minimumu izler. Bunlar tüm zamanların en yüksek ve en düşük değerlerini izlemek ve düşüş analizi yapmak için kullanışlıdır.
library(dplyr)
df <- data.frame(
day = 1:7,
price = c(50, 52, 48, 55, 53, 58, 56)
)
df %>%
mutate(
all_time_high = cummax(price),
all_time_low = cummin(price),
drawdown_from_high = price - cummax(price)
)row_number() Sıralaması
row_number(), her satıra bir tam sayı sırası atar. group_by() sonrasında kullanıldığında her grubun içinde sıralama yapar. Eşit değerler, görünme sıralarına göre ardışık sıralar alır.
library(dplyr)
sales <- data.frame(
region = c('East','East','East','West','West','West'),
rep = c('Alice','Bob','Carol','Dave','Eve','Frank'),
revenue = c(200, 150, 180, 120, 190, 160)
)
sales %>%
group_by(region) %>%
mutate(rank = row_number(desc(revenue))) %>%
arrange(region, rank)ntile() — Gruplara Bölme
ntile(x, n), verileri yaklaşık olarak eşit büyüklükte n gruba böler ve grup numarasını döndürür (1 = en düşük). Çeyreklikler, ondalık dilimler veya yüzdelik grupları oluşturmak için kullanışlıdır.
library(dplyr)
df <- data.frame(
customer = paste0('C', 1:10),
spend = c(50, 200, 75, 300, 125, 450, 25, 175, 100, 350)
)
df %>%
mutate(
quartile = ntile(spend, 4),
decile = ntile(spend, 10)
) %>%
arrange(spend)percent_rank() — Göreli Konum
percent_rank(x), her değerin sırasını 0 ile 1 arasında bir oran olarak döndürür. Minimum değer 0, maksimum değer 1 alır. Bir değerin diğer tüm değerlere göre nerede bulunduğunu gösterir.
library(dplyr)
df <- data.frame(
student = c('Alice','Bob','Carol','Dave','Eve'),
score = c(85, 92, 78, 95, 88)
)
df %>%
mutate(
pct_rank = round(percent_rank(score), 3),
top_pct = round(1 - percent_rank(score), 3)
) %>%
arrange(desc(score))Gruplarda Pencere İşlevleri
group_by() ile birleştirildiğinde tüm pencere işlevleri grupların farkında olur. Her grup kendi bağımsız penceresine sahip olur; lag/lead grup sınırlarını aşmaz, cumsum her grupta sıfırlanır ve sıralamalar grup içinde yapılır.
library(dplyr)
df <- data.frame(
product = c('A','A','A','B','B','B'),
month = c(1,2,3,1,2,3),
sales = c(100, 120, 110, 200, 180, 220)
)
df %>%
group_by(product) %>%
mutate(
mom_change = sales - lag(sales),
cumulative = cumsum(sales),
rank_in_product = row_number(sales)
)Birden Çok Pencere İşlevini Birleştirme
Zengin analitik sütunlar oluşturmak için tek bir mutate() çağrısında birden çok pencere işlevini zincirleyebilirsiniz. Bu, işlem hattınızı okunabilir tutar ve tekrarlanan group_by() çağrılarından kaçınmanızı sağlar.
library(dplyr)
stock <- data.frame(
date = as.Date(c('2024-01-01','2024-01-02','2024-01-03',
'2024-01-04','2024-01-05')),
close = c(150.2, 152.8, 149.5, 155.1, 157.3)
)
stock %>%
mutate(
prev_close = lag(close),
daily_return = round((close / lag(close) - 1) * 100, 2),
running_high = cummax(close),
distance_from_high = round(close - cummax(close), 2)
)varsayılan Bağımsız Değeriyle lag()
lag(x, n=1, default=NA), başlangıçtaki NA konumlarını doldurmak için bir default değeri kabul eder. Hesaplanan sütunlarda eksik değerler yerine sayısal bir temel değere ihtiyaç duyduğunuzda bu kullanışlıdır.
library(dplyr)
df <- data.frame(
week = 1:5,
visitors = c(500, 620, 480, 700, 650)
)
df %>%
mutate(
prev_week = lag(visitors, default = 0),
growth = visitors - lag(visitors, default = visitors[1])
)Hızlı Kontrol
x içindeki minimum değer için ntile(x, 4) ne döndürür?
Özet: Pencere İşlevleri
dplyr içindeki pencere işlevleri için önemli noktalar:
lag(x, n)— geçerli satırdan n satır önceki değer;lead(x, n)— n satır sonraki değercumsum()— ilerleyen toplam;cumprod()— ilerleyen çarpımcummax()/cummin()— ilerleyen maksimum / minimumrow_number()— grup içindeki tam sayı sırasıntile(x, n)— n gruba böler (1 = en düşük, n = en yüksek)percent_rank(x)— 0 ile 1 arasında kesirli sıra- Tüm pencere işlevleri
group_by()ile birleştirildiğinde grupların farkında olarak çalışır
library(dplyr)
# Comprehensive window function example
data.frame(
region = c('East','East','East','West','West','West'),
month = c(1,2,3,1,2,3),
sales = c(100, 130, 120, 200, 190, 210)
) %>%
group_by(region) %>%
mutate(
mom_chg = sales - lag(sales),
running_total = cumsum(sales),
rank = row_number(desc(sales))
) %>%
ungroup()Sıkça Sorulan Sorular
“Pencere İşlevleri: lag, lead, cumsum” dersi ücretsiz mi?
Evet — “Pencere İşlevleri: lag, lead, cumsum” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Pencere İşlevleri: lag, lead, cumsum” dersinde ne öğreneceğim?
Gruplar içinde hareketli toplamları, kaydırmaları ve birikimli toplamaları hesaplayın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Pencere İşlevleri: lag, lead, cumsum” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Gruplandırılmış Özetler ve group_by()
- Pencere İşlevleri: lag, lead, cumsum
- dplyr'da Çok Tablolu Birleştirmeler
- Düzenli Değerlendirme: {{ }} ve .data