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.0df[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.0Kolom 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 2Tantangan
MudahLengkapi 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")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online