0Pricing
R Academy · Ders

Mantıksal ve Karakter Dönüşümü

as.logical() ve as.character() ile logical, character ve numeric türleri arasında dönüşüm yapın.

Mantıksal ve Karakter Dönüşümü, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Türler Arasında Dönüştürme

R, tüm temel türler arasında dönüştürme yapmak için as.*() işlevleri sağlar. Bu derste, veri temizlemede en sık karşılaşacağınız dönüşümler olan logical, character ve numeric türleri arasındaki dönüşümler ele alınmaktadır.

# Quick overview of as.*() functions
cat('as.logical(1):    ', as.logical(1), '
')     # TRUE
cat('as.numeric(TRUE): ', as.numeric(TRUE), '
')  # 1
cat('as.character(3.14):', as.character(3.14), '
') # "3.14"
cat('as.logical("TRUE"):', as.logical('TRUE'), '
') # TRUE

Sayısaldan Mantıksal Türe

Bir sayıyı mantıksal türe dönüştürürken 0, FALSE olur; sıfır dışındaki her sayı TRUE olur. Bu kural hem integer hem de double değerleri için geçerlidir.

cat('as.logical(0):    ', as.logical(0), '
')     # FALSE
cat('as.logical(1):    ', as.logical(1), '
')     # TRUE
cat('as.logical(-5):   ', as.logical(-5), '
')    # TRUE (non-zero)
cat('as.logical(0.001):', as.logical(0.001), '
') # TRUE (non-zero)
cat('as.logical(0L):   ', as.logical(0L), '
')    # FALSE
cat('as.logical(3L):   ', as.logical(3L), '
')    # TRUE

Mantıksaldan Sayısal Türe

TRUE, 1'e; FALSE ise 0'a dönüştürülür. Bu dönüşüm, TRUE değerlerini saymak için sum() veya oranları hesaplamak için mean() kullanmak gibi birçok R deyiminin temelini oluşturur.

cat('as.numeric(TRUE):  ', as.numeric(TRUE), '
')   # 1
cat('as.numeric(FALSE): ', as.numeric(FALSE), '
')  # 0
cat('as.integer(TRUE):  ', as.integer(TRUE), '
')   # 1L

# Practical use: count TRUEs by summing
passed <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
cat('Passed count:', sum(as.numeric(passed)), '
')  # 4
cat('Pass rate:   ', mean(passed) * 100, '%
')      # 66.67%

Dizelerden as.logical()

as.logical('TRUE') ve as.logical('FALSE'), dize gösterimlerini dönüştürür. R, kısaltma olarak 'T' ve 'F' değerlerini de kabul eder. Diğer her şey (küçük harfle yazılmış 'true' dahil) NA döndürür.

cat('as.logical("TRUE"):  ', as.logical('TRUE'), '
')   # TRUE
cat('as.logical("FALSE"): ', as.logical('FALSE'), '
')  # FALSE
cat('as.logical("T"):     ', as.logical('T'), '
')      # TRUE
cat('as.logical("F"):     ', as.logical('F'), '
')      # FALSE
cat('as.logical("yes"):   ', as.logical('yes'), '
')    # NA (not recognised)
cat('as.logical("true"):  ', as.logical('true'), '
')   # NA (case-sensitive!)

Sayısaldan Karakter Türe

as.character(x), bir sayıyı dize gösterimine dönüştürür. Bu, etiketler veya kimlikler oluştururken ya da sayıları dizelere eklemeniz gerektiğinde kullanışlıdır.

num_val <- 3.14159
char_val <- as.character(num_val)
cat('as.character(3.14159):', char_val, '
')  # '3.14159'
cat('class:', class(char_val), '
')           # character

# Building labels
ids <- 1:5
labels <- paste0('Item_', as.character(ids))
cat('Labels:', labels, '
')

Karakterden Sayısal Türe

as.numeric('3.14'), bir dizeyi double'a ayrıştırır. Dize bir sayı olarak yorumlanamıyorsa R, bir uyarıyla birlikte NA döndürür. Üretim kodunda dönüştürme yapmadan önce girdiyi her zaman doğrulayın.

cat('as.numeric("3.14"):  ', as.numeric('3.14'), '
')   # 3.14
cat('as.numeric("100"):   ', as.numeric('100'), '
')    # 100
cat('as.numeric("-5.5"):  ', as.numeric('-5.5'), '
')   # -5.5
cat('as.numeric("abc"):   ', as.numeric('abc'), '
')    # NA with warning
cat('as.numeric("1e3"):   ', as.numeric('1e3'), '
')    # 1000 (sci notation OK)

Mantıksaldan Karakter Türe

as.character(TRUE), 'TRUE' dizesini üretir. Bu, mantıksal değerleri metin çıktısına, dosya dışa aktarımlarına veya dize birleştirmelerine eklemeniz gerektiğinde kullanışlıdır.

flag_t <- TRUE
flag_f <- FALSE

cat('as.character(TRUE): ', as.character(flag_t), '
')  # 'TRUE'
cat('as.character(FALSE):', as.character(flag_f), '
')  # 'FALSE'
cat('class:', class(as.character(flag_t)), '
')         # character

# In paste()
message <- paste('System status:', as.character(flag_t))
cat(message, '
')

Gidiş-Dönüş Dönüştürmesi

Çoğu dönüşüm geri alınabilir (gidiş-dönüş), ancak bazı durumlarda bilgi kaybı yaşanabilir: numeric -> character -> numeric dönüşümü, sayının dize olarak nasıl biçimlendirildiğine bağlı olarak hassasiyet kaybına yol açabilir.

original <- 3.141592653589793
char_version <- as.character(original)
back_to_num <- as.numeric(char_version)

cat('Original:  ', original, '
')
cat('As string: ', char_version, '
')
cat('Back:      ', back_to_num, '
')
cat('Identical?:', identical(original, back_to_num), '
')
cat('Equal?:    ', original == back_to_num, '
')

Farklı Kaynaklardan Gelen Vektörleri Dönüştürme

as.numeric() işlevini bir karakter vektörüne uyguladığınızda her öğe bağımsız olarak dönüştürülür. Ayrıştırılamayan öğeler NA olur. Bu, CSV dosyalarından okunan sayısal görünümlü verileri temizlemenin standart yoludur.

# Simulated data from CSV (all read as character)
raw_data <- c('42', '37.5', 'N/A', '55', '', '28.0')
cat('Raw character data:', raw_data, '
')

numeric_data <- suppressWarnings(as.numeric(raw_data))
cat('Converted:         ', numeric_data, '
')  # 42 37.5 NA 55 NA 28
cat('NA count:          ', sum(is.na(numeric_data)), '
')

ifelse() İçinde Mantıksal Dönüştürme

as.numeric() işlevini ifelse() ile birleştirmek veya mantıksal bir vektörle doğrudan çarpmak, veri analizinde koşullu puanlama ya da özellik mühendisliği için yaygın bir deyimdir.

# Score: 1 for correct, 0 for incorrect
quiz_answers <- c('A', 'C', 'B', 'D', 'B')
correct      <- c('A', 'B', 'B', 'D', 'C')

is_correct <- quiz_answers == correct
cat('Correct:  ', is_correct, '
')
cat('As 0/1:   ', as.numeric(is_correct), '
')
cat('Score:    ', sum(is_correct), '/', length(is_correct), '
')

Dönüştürme Özeti

Temel mantıksal ve karakter dönüşümlerinin özeti:

  • as.logical(0) → FALSE; sıfır dışındaki her değer → TRUE
  • as.logical('TRUE'/'T') → TRUE; büyük-küçük harfe duyarlıdır; diğerleri → NA
  • as.numeric(TRUE) → 1; as.numeric(FALSE) → 0
  • as.character(x) → x'in dize gösterimi
  • as.numeric('3.14') → 3.14; sayısal olmayan dizeler → uyarıyla birlikte NA
# All conversions in one snippet
cat('logical->num:  ', as.numeric(c(TRUE, FALSE)), '
')
cat('num->logical:  ', as.logical(c(0, 1, -1, 0.5)), '
')
cat('char->num:     ', suppressWarnings(as.numeric(c('5', 'abc', '3.1'))), '
')
cat('char->logical: ', as.logical(c('TRUE', 'FALSE', 'yes')), '
')
cat('logical->char: ', as.character(c(TRUE, FALSE)), '
')

Hızlı Kontrol

as.numeric(TRUE) + as.numeric(FALSE) R'de neye eşit olur?

Özet: Mantıksal ve Karakter Dönüştürme

Harika! Bu dersten çıkarılacak temel sonuçlar:

  • as.logical(0) → FALSE; sıfır dışındaki değerler → TRUE; 'TRUE'/'T' → TRUE
  • as.numeric(TRUE) → 1; as.numeric(FALSE) → 0
  • as.character(x), herhangi bir değeri dize biçimine dönüştürür
  • as.numeric('3.14'), sayısal bir dizeyi ayrıştırır; geçersiz dizeler → NA
  • as.logical('true'), NA'dır — eşleşme büyük-küçük harfe duyarlıdır ('TRUE' çalışır)
  • Dönüşümler çoğunlukla geri alınabilir; beklenen şekilde NA üreten girdiler içeren sütunları dönüştürürken suppressWarnings() kullanın
# Practical: parse a messy survey score column
raw_scores <- c('8', '7', 'N/A', '9', 'skip', '6')
numeric_scores <- suppressWarnings(as.numeric(raw_scores))
cat('Parsed:', numeric_scores, '
')
cat('Valid responses:', sum(!is.na(numeric_scores)), '
')
cat('Average score:  ', round(mean(numeric_scores, na.rm = TRUE), 2), '
')

Sıkça Sorulan Sorular

“Mantıksal ve Karakter Dönüşümü” dersi ücretsiz mi?

Evet — “Mantıksal ve Karakter Dönüşümü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“Mantıksal ve Karakter Dönüşümü” dersinde ne öğreneceğim?

as.logical() ve as.character() ile logical, character ve numeric türleri arasında dönüşüm yapın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Mantıksal ve Karakter Dönüşümü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. R'nin Tür Sistemine Genel Bakış
  2. Sayısal Türler Arasında Dönüştürme
  3. Mantıksal ve Karakter Dönüşümü
  4. Dönüştürme Tuzakları ve En İyi Uygulamalar
← R Academy Sayfasına Dön