Grup Özetleri
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 40 / 64.
tapply(values, groups, f), değerleri gruplandırır ve tek bir çağrıda her gruba f uygular. Şununla aynı sonucu verir: sapply(split(values, groups), f):
amounts <- c(10, 20, 30, 40)
category <- c("food", "rent", "food", "fun")
print(tapply(amounts, category, sum))
print(tapply(amounts, category, max))Çıktı:
food fun rent
40 40 20
food fun rent
30 40 20 Sonuç, sıralanmış düzende gruba göre adlandırılır; bu nedenle [[ ]] bir grubu okur ve names() grupları listeler:
amounts <- c(10, 20, 30, 40)
category <- c("food", "rent", "food", "fun")
avg <- tapply(amounts, category, mean)
print(avg[["food"]])
print(names(avg))Çıktı:
[1] 20
[1] "food" "fun" "rent"Özetleme işlevi size ait olabilir. Burada her grupta 25’in üzerindeki siparişleri sayar:
amounts <- c(10, 20, 30, 40)
category <- c("food", "rent", "food", "fun")
print(tapply(amounts, category, function(v) sum(v > 25)))Çıktı:
food fun rent
1 1 0 Sonuç adlandırılmış bir vektördür; bu nedenle sort() ve which.max() en büyük grubu bulur. which.max() eşit değerler arasındaki ilk değeri verir:
amounts <- c(10, 20, 30, 40, 5)
category <- c("food", "rent", "food", "fun", "rent")
totals <- tapply(amounts, category, sum)
print(names(totals)[which.max(totals)])
print(names(sort(totals, decreasing = TRUE)))Çıktı:
[1] "food"
[1] "food" "fun" "rent"Görev
Kolaycity_report(cities, temps) işlevini tamamla. Her şehir için alfabetik sırayla bir satır döndür: oslo: avg 4.5, max 9; ortalama sıcaklık bir ondalık basamağa yuvarlanmalı ve en yüksek sıcaklık da gösterilmelidir. Ardından, ortalaması en yüksek olan şehrin adını (ortalamalar eşitse alfabetik olarak ilk olanı) Warmest: ifadesinin arkasına ekle.
Sağlanan kod, şehirleri ve sıcaklıkları eşit uzunlukta, virgülle ayrılmış iki satır olarak okur ve döndürülen her satırı yazdırır.
Kendin dene
city_report <- function(cities, temps) {
# Kodunuzu buraya yazın
character(0)
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(city_report(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme8Sıralama ve Gruplama
Vektörleri SıralamaAnahtara Göre Sıralamasplit() ile GruplamaGrup ÖzetleriTekrar - Liderlik Tablosu3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi