Menu
Coddy logo textTech

Satırları Filtreleme

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

Her satır için bir değer içeren mantıksal vektör, TRUE olduğu satırları seçer. Virgülden önce yerleştirin ve her sütunu korumak için sütun tarafını boş bırakın:

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

Çıktı:

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

Koşulları & (her ikisi) ve | (ikisinden biri) ile birleştirin. Her parça bir sütunun tamamını karşılaştırır; bu nedenle sonuçta her satır için hâlâ bir değer bulunur:

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

Çıktı:

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

subset(df, condition) daha kısa kodla aynı işlemi yapar; çünkü içinde sütun adları doğrudan kullanılabilir:

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)

Çıktı:

[1] "ada" "cy" 

Hiçbir satır eşleşmediğinde sonuç 0 satırlı bir veri çerçevesidir; bu nedenle veriyi okumadan önce nrow() değerini kontrol edin:

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

Çıktı:

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

Görev

Kolay

adults_in(df, city) işlevini tamamlayın. df, name, age ve city sütunlarına sahiptir. En az 18 yaşında olan ve city içinde yaşayan kişilerin adlarını satır sırasına göre ve , ile birleştirilmiş şekilde veya none olarak döndürün.

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

Kendin dene

adults_in <- function(df, city) {
  # Kodunuzu buraya yazın
  "none"
}

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