R'ye nispeten yeni bir üye oldum, bu yüzden buna çok açık bir cevap varsa özür dilerim. Diğer sorulara baktım ve 'uygulamak' cevabın bence de bu durumda nasıl kullanılacağını bilemiyorum.'for' döngülerinden R'yi kullanmanın daha verimli yolları
Her yıl katılımcıların davet edildiği uzunlamasına bir anketim var. Bazı yıllarda yer almakta başarısız oluyorlar ve bazen ölüyorlar. Anketin başlangıcından bu yana tutarlı bir 'çizgi' için hangi katılımcıların yer aldığını belirlemem gerekiyor (yani durursa, iyi için duruyorlar).
Bunu, aşağıdaki örnekte iyi çalışan bir 'for' döngüsü ile yaptım. Ama uzun yıllar ve çok sayıda katılımcım var ve döngü çok yavaş. Kullanabileceğim daha hızlı bir yaklaşım var mı?
Örnekte, TRUE o sene katıldığı anlamına gelir. Döngü, son sene katıldığı iki yıl - 'son yıl' yaratır ve son yıldan önce bütün yıllarını tamamlayıp tamamlamadıklarını göstermek için '' çizgi '' (yani, 1, 3 ve 5).
dat <- data.frame(ids = 1:5, "1999" = c(T, T, T, F, T), "2000" = c(T, F, T, F, T), "2001" = c(T, T, T, T, T), "2002" = c(F, T, T, T, T), "2003" = c(F, T, T, T, F))
finalyear <- NULL
streak <- NULL
for (i in 1:nrow(dat)) {
x <- as.numeric(dat[i,2:6])
y <- max(grep(1, x))
finalyear[i] <- y
streak[i] <- sum(x) == y
}
dat$finalyear <- finalyear
dat$streak <- streak
Teşekkürler!
sürü önerdiği) 2-çizgilerle çok açık hale getirmek için - herkes daha büyük bir veri kümesini ve kriter onları oluşturmak istiyorsunuz? Veri seti ne kadar büyüktür, bu yüzden kıyaslama için temsili bir test seti yapmak mümkün müdür? – Spacedman
Yaklaşık 250.000 vaka ve 25 yıl var. Aşağıdaki tüm cevaplar sorunumu çözüyor - herkese teşekkürler! Eğer insanlar ilgilenirse, farklı yaklaşımları test etmek için temsili bir veri seti hazırlayabilirim. –