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

تصفية الصفوف

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

يختار المتجه المنطقي الذي يحتوي على قيمة واحدة لكل صف الصفوف التي تكون فيها القيمة TRUE. ضعه قبل الفاصلة، واترك جانب الأعمدة فارغًا للاحتفاظ بكل عمود:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people[people$age > 30, ])
print(nrow(people[people$age > 30, ]))

الناتج:

  name age   city
1  ada  36 london
3   cy  41   rome
[1] 2

اجمع الشروط باستخدام & (كلاهما) و| (أحدهما). يقارن كل جزء عمودًا كاملًا، لذلك تظل النتيجة تحتوي على قيمة واحدة لكل صف:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people[people$age > 30 & people$city == "london", ])
print(people$name[people$age < 25 | people$city == "rome"])

الناتج:

  name age   city
1  ada  36 london
[1] "bo" "cy"

subset(df, condition) ينفّذ الأمر نفسه باستخدام شيفرة أقصر، لأن أسماء الأعمدة يمكن استخدامها مباشرةً داخله:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
older <- subset(people, age > 30)
print(older$name)

الناتج:

[1] "ada" "cy" 

عندما لا يطابق أي صف، تكون النتيجة إطار بيانات يتكون من 0 صفوف، لذا تحقّق من nrow() قبل القراءة منه:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
nobody <- people[people$age > 90, ]
print(nrow(nobody))
print(if (nrow(nobody) == 0) "none" else nobody$name[1])

الناتج:

[1] 0
[1] "none"
challenge icon

التحدي

سهل

أكمل adults_in(df, city). يحتوي df على الأعمدة name وage وcity. أعد أسماء الأشخاص الذين تبلغ أعمارهم 18 عامًا على الأقل ويعيشون في city، بترتيب الصفوف ومفصولة باستخدام , ، أو none.

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

جرّب بنفسك

adults_in <- function(df, city) {
  # اكتب الكود الخاص بك هنا
  "none"
}

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

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

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

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