Menu
Coddy logo textTech

Ekleme ve Sıralama

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 45 / 64.

Yeni bir sütun adına atama yapmak sütunu ekler. Sütunlar arasındaki aritmetik işlemler, her vektör aritmetiğinde olduğu gibi satır satır çalışır:

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)

Çıktı:

  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), ] satırları bir sütuna göre sıralar. Soldaki satır numaraları özgün satırlara bağlı kalır. Büyükten küçüğe sıralamak için eksi işareti veya decreasing = TRUE kullanın; eşitlikler için ikinci bir anahtar ekleyin:

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

Çıktı:

  item total
2  jam  12.5
3  oil   9.0
1  tea   8.0

Yeni bir sütun, diğer sütunlardan oluşturulmuş metin olabilir. sprintf() aynı anda tüm sütunlar üzerinde çalışır:

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)

Çıktı:

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

rbind(), aynı sütunlara sahip tek satırlı bir veri çerçevesinden bir satır ekler ve head(df, n) ilk n satırı tutar:

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

Çıktı:

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

Görev

Kolay

order_totals(df) işlevini tamamlayın. df, item, qty ve price sütunlarına sahiptir. Bir total sütunu ekleyin (miktar çarpı fiyat), satırları toplam değerine göre yüksekten düşüğe sıralayın (toplamları eşit olan öğeler alfabetik sırada), ve satır başına bir satır döndürün: jam: 12.50; toplam iki ondalık basamaklı olmalıdır.

Sağlanan kod, tabloyu read.csv(text = input) ile girdiden okur: ilk satır sütun adlarını içerir ve sonraki her satır, değerleri virgüllerle ayrılmış bir satırdır. Kod, döndürülen her satırı yazdırır.

Kendin dene

order_totals <- function(df) {
  # Kodunuzu buraya yazın
  character(0)
}

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input)
cat(order_totals(df), 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