تصفية الصفوف
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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"التحدي
سهلأكمل 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")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم3المجموعات والعدّ
القيم الفريدةعمليات المجموعاتاختبارات الانتماءالعد باستخدام table()مراجعة - ضيوف الفعالية9إطارات البيانات
إنشاء إطارات البياناتالأعمدة والصفوفتصفية الصفوفالإضافة والترتيبمراجعة - تقرير المبيعاتتدرّب بنفسك: مترجم R عبر الإنترنت