Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الإضافة والترتيب

جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 45 من 64.

تؤدي الإسنادات إلى اسم عمود جديد إلى إضافة العمود. تعمل العمليات الحسابية بين الأعمدة صفًا بصف، مثل أي عمليات حسابية على المتجهات:

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)

الناتج:

  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), ] يرتّب الصفوف حسب عمود. تبقى أرقام الصفوف على اليسار مرتبطة بالصفوف الأصلية. استخدم علامة الطرح أو decreasing = TRUE للترتيب من الأعلى إلى الأدنى، ومفتاحًا ثانيًا عند التساوي:

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

الناتج:

  item total
2  jam  12.5
3  oil   9.0
1  tea   8.0

يمكن أن يكون العمود الجديد نصًا مبنيًا من أعمدة أخرى. تعمل sprintf() على الأعمدة بأكملها دفعةً واحدة:

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)

الناتج:

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

rbind() يضيف صفًا من إطار بيانات مكوّن من صف واحد وله الأعمدة نفسها، وhead(df, n) يحتفظ بالصفوف n الأولى:

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

الناتج:

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

التحدي

سهل

أكمل order_totals(df). يحتوي df على الأعمدة item وqty وprice. أضف عمود total (الكمية مضروبة في السعر)، وفرز الصفوف حسب الإجمالي من الأعلى إلى الأقل (العناصر ذات الإجماليات المتساوية أبجديًا)، وأعد سطرًا واحدًا لكل صف، jam: 12.50، مع عرض الإجمالي حتى منزلتين عشريتين.

يقرأ الكود المزوّد الجدول من الإدخال باستخدام read.csv(text = input): يحتوي السطر الأول على أسماء الأعمدة، وكل سطر تالٍ يمثل صفًا واحدًا، مع فصل القيم بفواصل. يطبع الكود كل سطر مُعاد.

جرّب بنفسك

order_totals <- function(df) {
  # اكتب الكود الخاص بك هنا
  character(0)
}

# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input)
cat(order_totals(df), sep = "\n")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم R عبر الإنترنت