Harcamaları Kaydetme
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 57 / 64.
Bu projede, komutları satır satır okuyan bir gider takipçisi oluşturacaksın. Beş adımda giderleri kaydetmeyi, toplamı raporlamayı, harcamaları kategoriye göre gruplamayı, en büyük giderleri listelemeyi ve bir ayı özetlemeyi öğrenir. Her adım aynı tracker(commands) işlevini genişletir.
ADD 2024-05-01 food 12.50
ADD 2024-05-02 rent 500
TOTAL
CATEGORY
TOP 2
MONTH 2024-05Giderler, her gider için bir satır içeren bir veri çerçevesinde tutulur. Doğru türlerde üç boş sütunla başlar ve rbind() her geçerli ADD için bir satır ekler:
expenses <- data.frame(date = character(0), category = character(0), amount = numeric(0))
expenses <- rbind(expenses, data.frame(date = "2024-05-01", category = "food", amount = 12.5))
print(nrow(expenses))
print(expenses$amount)Çıktı:
[1] 1
[1] 12.5Bir ADD satırı dört bölümden ve pozitif bir miktardan oluşmalıdır. Miktarı suppressWarnings(as.numeric()) ile dönüştürün; böylece hatalı bir değer uyarı yerine NA verir. Ardından satırı eklemeden önce miktarı kontrol edin:
parts <- strsplit("ADD 2024-05-01 food abc", " ")[[1]]
amount <- suppressWarnings(as.numeric(parts[4]))
print(length(parts) == 4 && !is.na(amount) && amount > 0)Çıktı:
[1] FALSEGörev
Kolayİlk komut için tracker(commands) işlevini tamamla:
ADD <date> <category> <amount>: satır tam olarak dört parçaya sahipse ve miktar 0'ın üzerinde bir sayıysa, gideri ekle ve miktarı iki ondalık basamakla göstererekadded <category> <amount>yanıtını ver; örneğinadded food 12.50. Aksi takdirdeinvalid:ifadesinin ardından komutun tamamını yaz.
Sağlanan kod, her giriş satırını tek bir komut olarak tracker() işlevine aktarır ve döndürülen her yanıtı kendi satırına yazdırır. Tarihler YYYY-MM-DD biçiminde yazılır, kategoriler küçük harfli sözcüklerdir ve girdi yalnızca şimdiye kadar açıklanan komutları içerir.
Kendin dene
tracker <- function(commands) {
expenses <- data.frame(date = character(0), category = character(0), amount = numeric(0))
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
# Kodunuzu buraya yazın
}
replies
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(tracker(input), sep = "\n")
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
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi