Menu
CoddyTech

Ringkasan Kelompok

Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 40 dari 64.

tapply(values, groups, f) mengelompokkan nilai dan menerapkan f ke setiap grup dalam satu pemanggilan. Hasilnya sama dengan 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))

Output:

food  fun rent 
  40   40   20 
food  fun rent 
  30   40   20 

Hasilnya diberi nama berdasarkan grup dalam urutan terurut, jadi [[ ]] membaca satu grup dan names() mencantumkan grup-grup tersebut:

amounts <- c(10, 20, 30, 40)
category <- c("food", "rent", "food", "fun")
avg <- tapply(amounts, category, mean)
print(avg[["food"]])
print(names(avg))

Output:

[1] 20
[1] "food" "fun"  "rent"

Fungsi ringkasan bisa kamu buat sendiri. Di sini, fungsi tersebut menghitung jumlah pesanan di atas 25 pada setiap kelompok:

amounts <- c(10, 20, 30, 40)
category <- c("food", "rent", "food", "fun")
print(tapply(amounts, category, function(v) sum(v > 25)))

Output:

food  fun rent 
   1    1    0 

Hasilnya adalah vector bernama, jadi sort() dan which.max() menemukan kelompok terbesar. which.max() memberikan nilai pertama jika ada nilai yang sama:

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)))

Output:

[1] "food"
[1] "food" "fun"  "rent"
challenge icon

Tantangan

Mudah

Lengkapi city_report(cities, temps). Kembalikan satu baris untuk setiap kota dalam urutan alfabetis, oslo: avg 4.5, max 9, dengan suhu rata-rata yang dibulatkan menjadi satu angka desimal dan suhu tertinggi. Lalu tambahkan Warmest: diikuti kota dengan rata-rata tertinggi (kota yang paling awal dalam urutan alfabetis jika rata-ratanya sama).

Code yang disediakan membaca kota dan suhu sebagai dua baris yang dipisahkan koma dengan panjang yang sama, lalu mencetak setiap baris yang dikembalikan.

Coba sendiri

city_report <- function(cities, temps) {
  # Tulis kodemu di sini
  character(0)
}

# Kode input/output yang disediakan: biarkan tetap seperti ini
input <- suppressWarnings(readLines(file("stdin")))
cat(city_report(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online