논리형과 문자형 변환
as.logical()과 as.character()로 logical, character, numeric 사이를 변환합니다.
논리형과 문자형 변환은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
유형 간 변환
R은 모든 기본 유형 사이의 변환을 위해 as.*() 함수를 제공합니다. 이 레슨에서는 데이터 정제에서 가장 자주 접하게 되는 logical, character, numeric 유형 간의 변환을 다룹니다.
# 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숫자에서 logical로
숫자를 logical로 변환하면 0은 FALSE가 되고 0이 아닌 모든 숫자는 TRUE가 됩니다. 이 규칙은 integer와 double 모두에 적용됩니다.
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), '
') # TRUElogical에서 숫자로
TRUE는 1로, FALSE는 0으로 변환됩니다. 이 변환은 sum()으로 TRUE 값의 개수를 세거나 mean()으로 비율을 계산하는 등 R의 여러 관용적 표현의 핵심입니다.
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%문자열에서 as.logical()로 변환
as.logical('TRUE')와 as.logical('FALSE')는 문자열 표현을 변환합니다. R은 'T'와 'F'도 약어로 허용합니다. 그 밖의 모든 값(소문자인 'true' 포함)은 NA를 반환합니다.
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!)숫자에서 character로
as.character(x)는 숫자를 문자열 표현으로 변환합니다. 레이블이나 ID를 만들거나 숫자를 문자열에 삽입해야 할 때 유용합니다.
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, '
')character에서 숫자로
as.numeric('3.14')는 문자열을 double로 해석합니다. 문자열을 숫자로 해석할 수 없으면 R은 경고와 함께 NA를 반환합니다. 운영 코드에서 변환하기 전에 항상 입력을 검증하십시오.
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)logical에서 character로
as.character(TRUE)는 'TRUE'라는 문자열을 생성합니다. logical 값을 텍스트 출력, 파일 내보내기 또는 문자열 연결에 포함해야 할 때 유용합니다.
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, '
')왕복 변환
대부분의 변환은 되돌릴 수 있지만 일부 정보가 손실될 수 있습니다. numeric -> character -> numeric 변환에서는 숫자를 문자열로 형식화하는 방식에 따라 정밀도가 손실될 수 있습니다.
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, '
')출처가 섞인 벡터 변환
character 벡터에 as.numeric()을 적용하면 각 요소가 독립적으로 변환됩니다. 해석할 수 없는 요소는 NA가 됩니다. 이는 CSV 파일에서 읽은 숫자처럼 보이는 데이터를 정제하는 표준 방법입니다.
# 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()에서의 logical 변환
as.numeric()을 ifelse()와 결합하거나 logical 벡터를 직접 곱하는 방식은 데이터 분석에서 조건부 점수 계산이나 특성 공학에 흔히 사용하는 관용적 표현입니다.
# 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), '
')변환 요약
주요 logical 및 character 변환을 다음과 같이 요약할 수 있습니다.
as.logical(0)→FALSE; 0이 아닌 값 →TRUEas.logical('TRUE'/'T')→TRUE; 대소문자를 구분하며 그 외의 값 →NAas.numeric(TRUE)→1;as.numeric(FALSE)→0as.character(x)→ x의 문자열 표현as.numeric('3.14')→ 3.14; 숫자가 아닌 문자열 → 경고와 함께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)), '
')빠른 확인
R에서 as.numeric(TRUE) + as.numeric(FALSE)는 어떤 값으로 평가됩니까?
복습: logical 및 character 변환
훌륭합니다! 이번 레슨의 핵심 내용은 다음과 같습니다.
as.logical(0)→FALSE; 0이 아닌 값 →TRUE;'TRUE'/'T'→TRUEas.numeric(TRUE)→1;as.numeric(FALSE)→0as.character(x)는 모든 값을 문자열 형태로 변환합니다.as.numeric('3.14')는 숫자 문자열을 해석하고, 유효하지 않은 문자열은NA가 됩니다.as.logical('true')는NA입니다. 대소문자를 구분하므로'TRUE'는 작동합니다.- 변환은 대부분 되돌릴 수 있습니다. NA가 생성될 것으로 예상되는 항목이 있는 열을 변환할 때는
suppressWarnings()를 사용하십시오.
# 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), '
')자주 묻는 질문
“논리형과 문자형 변환” 강의는 무료인가요?
네 — “논리형과 문자형 변환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“논리형과 문자형 변환”에서 뭘 배우나요?
as.logical()과 as.character()로 logical, character, numeric 사이를 변환합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
R Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“논리형과 문자형 변환” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- R의 형식 시스템 개요
- 수치 형식 간 변환
- 논리형과 문자형 변환
- 강제 변환의 함정과 모범 사례