Menu
Coddy logo textTech

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"
challenge icon

Görev

Kolay

city_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")
quiz iconKendini test et

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

Kendi başına pratik yap: Online R derleyicisi