Menu
CoddyTech

Menambahkan dan Mengurutkan

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

Menetapkan nama kolom baru akan menambahkan kolom tersebut. Operasi aritmetika antar kolom bekerja per baris, seperti aritmetika vektor:

orders <- data.frame(item = c("tea", "jam", "oil"), qty = c(2, 5, 1), price = c(4, 2.5, 9))
orders$total <- orders$qty * orders$price
print(orders)

Output:

  item qty price total
1  tea   2   4.0   8.0
2  jam   5   2.5  12.5
3  oil   1   9.0   9.0

df[order(df$col), ] mengurutkan baris berdasarkan kolom. Nomor baris di sebelah kiri tetap melekat pada baris aslinya. Gunakan tanda minus atau decreasing = TRUE untuk mengurutkan dari nilai tertinggi ke terendah, dan kunci kedua untuk nilai yang sama:

orders <- data.frame(item = c("tea", "jam", "oil"), qty = c(2, 5, 1), price = c(4, 2.5, 9))
orders$total <- orders$qty * orders$price
print(orders[order(-orders$total, orders$item), c("item", "total")])

Output:

  item total
2  jam  12.5
3  oil   9.0
1  tea   8.0

Kolom baru dapat berupa teks yang dibuat dari kolom lain. sprintf() bekerja pada seluruh kolom sekaligus:

orders <- data.frame(item = c("tea", "jam"), qty = c(2, 5), price = c(4, 2.5))
orders$label <- sprintf("%d x %s", orders$qty, orders$item)
print(orders$label)

Output:

[1] "2 x tea" "5 x jam"

rbind() menambahkan satu baris dari data frame satu baris dengan kolom yang sama, dan head(df, n) mempertahankan n baris pertama:

orders <- data.frame(item = c("tea", "jam"), qty = c(2, 5))
orders <- rbind(orders, data.frame(item = "oil", qty = 1))
print(nrow(orders))
print(head(orders[order(-orders$qty), ], 2))

output:

[1] 3
  item qty
2  jam   5
1  tea   2
challenge icon

Tantangan

Mudah

Lengkapi order_totals(df). df memiliki kolom item, qty, dan price. Tambahkan kolom total (jumlah dikali harga), urutkan baris berdasarkan total dari tertinggi ke terendah (item dengan total yang sama diurutkan menurut abjad), lalu kembalikan satu baris untuk setiap baris, jam: 12.50, dengan total hingga dua angka desimal.

Kode yang disediakan membaca tabel dari input dengan read.csv(text = input): baris pertama berisi nama kolom dan setiap baris berikutnya berisi satu baris data, dengan nilai yang dipisahkan oleh koma. Kode tersebut mencetak setiap baris yang dikembalikan.

Coba sendiri

order_totals <- function(df) {
  # Tulis kodemu di sini
  character(0)
}

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input)
cat(order_totals(df), 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