|

R 데이터프레임 만들기

데이터 분석 실무에 첫발을 내디뎠을 때, 우리가 현장 시스템에서 마주하는 거의 99%에 육박하는 대부분의 상용 마케팅 빅데이터는 무조건 엑셀 스프레드시트처럼 ‘가로 행(Row, 레코드)’과 ‘세로 열(Column, 컬럼)’이 교차하며 구성된 직관적인 2차원의 장부 표 형태입니다.

R 프로그래밍 언어의 탄생 이유이자, 애초에 이러한 표 형태의 데이터를 다루는 데 지구상에서 가장 특화된 수학 언어 모델 기반이며, 이 엑셀 표 같은 거룩한 구조를 R에서는 공식 명칭 “데이터 프레임(Data Frame, DF)”이라고 숭고하게 부릅니다.

본 포스팅 지침서에서는 R 콘솔 환경에서 나만의 외부 의존성 없는 표(데이터 프레임)를 메모리에서 직접 빈손으로 박스 모델 창조하고, 그 내부 데이터 뼈대 구조 스펙을 터미널에서 빠르게 오디팅 진단 파악하는 가장 핵심적인 기초 진찰 함수들을 순서대로 알아봅니다.

1. 대체 엑셀과는 다른 데이터 프레임(Data Frame)만의 특징이란?

데이터 프레임은 앞서 배운 수많은 파편화된 리니어 벡터(Vector) 가닥들이 여러 개 옆으로 평행하게 시멘트로 평면 모조 바인딩되어 만들어진 거대한 사각형 2D 블록입니다. 자유로운 엑셀과 달리 아주 숨 막히고 깐깐한 주의할 점은 “같은 기둥의 열(Column) 안에는 위아래로 무조건 한 가지의 같은 고유 타입(숫자 컬럼이면 모조리 숫자, 문자 칼럼이면 모조리 문자)의 데이터가 반드시 결함 없이 통일되게 들어가야 한다”는 엄격한 강제 타입 규칙이 프로그래밍적으로 존재합니다. 왜냐하면 데이터를 쪼갰을 때 각각의 독립적 ‘세로 열’ 자체가 곧 통일된 시스템 스펙을 가진 하나의 고유 ‘1차원 벡터’ 배열 그 자체이기 때문입니다.

2. data.frame() 원시 함수로 직접 빈 바닥에서 표 마법 생성하기

R 스크립트 창에서 아주 간단한 형태의 요약 고객 장부 데이터를 외부 불러오기 없이 직접 창조해봅시다. data.frame() 함수 괄호를 열고 그 안에 고객의 각각의 이름 뭉치(벡터), 나이 뭉치, 구매금액 뭉치 벡터를 열 방향을 상상하며 차례대로 결합 나열하면, 알아서 표면 장력으로 엮이며 표가 기적처럼 체결 완성됩니다.

# 이름 묶음, 나이 묶음, 달러 등급 구매금액 결제 벡터를 차례대로 주입해 데이터 프레임 단방에 생성
my_df <- data.frame(
  Name = c("김철수", "이영희", "박지성"),  # 문자열 타임
  Age = c(25, 30, 22),                 # 정수 타입 군집
  Score = c(85.5, 92.0, 78.5)          # 실수 더블형 스코어 타입 병합
)

my_df
>     Name Age Score
> 1 김철수  25  85.5
> 2 이영희  30  92.0
> 3 박지성  22  78.5

출력 코드를 콘솔에 엔터 쳐보면, 텍스트 창에 엑셀 시트처럼 좌측의 회색 로우 넘버(인덱스 행 번호 1,2,3) 가이드라인과 함께 깔끔하고 세로 정렬이 딱딱 스냅에 맞는 완벽한 형태의 표가 만들어진 것을 눈으로 쾌감 있게 확인할 수 있습니다.

3. 눈 돌아가는 대용량 빅 데이터프레임 내부 구조 한눈에 조망 파악하기 (오디팅)

이제 여러분이 초보 티를 벗고 실전 과업에 투입되어 수만~수십만 건의 무거운 클라이언트 마케팅 데이터를 외부 플랫폼(CSV)에서 로드로 막 불러왔다고 시뮬레이션 가정해봅시다. 너무 방대해서 스크롤 내리며 데이터를 일일이 눈알을 굴러가며 읽는 미친 짓을 할 수는 없습니다. 이때 데이터 프레임의 전체적인 볼륨 덩치와 속 윤곽을 즉시 파악 스캔하는 핵심 의사 필수 체크 단축 함수 3가지를 소개합니다.

① 데이터 맛보기, 앞뒤 끄트머리 6줄만 살짝 간 보기 엿보기: head() 와 tail()

엑셀 행이 무려 10만 줄이어도 쫄 필요 없습니다. 데이터의 생김새, 소수점 자릿수 포맷을 가볍게 파악하려면 보통 윗부분 뚜껑과 맨 아랫단 심해 바닥 부분만 상하 살짝 확인하면 충분히 짐작이 갑니다.

head(my_df) # 위에서 머리 기준 6줄만 도려내어 보여줌
tail(my_df) # 더러운 찌꺼기가 남았는지 아래 맨 끝 꼬리 6줄만 보여줌

② 표 면적 도대체 사이즈가 어떻게 되나? (행과 열의 총 갯수 윤곽): dim()

데이터가 가진 전체 공간의 물리적 규모(Dimension, 2D)를 절대수치로 계산해 즉각 반환합니다. 결과는 무조건 변함없이 [행의 갯수, 열의 기둥 갯수] 쌍으로 산출됩니다.

# 이 표의 행열 매트릭스 도면 사이즈 스펙이 뭡니까?
dim(my_df)
> [1] 3 3

(결과 스펙: 가로가 3줄 데이터이고, 세로 스펙이 3개의 컬럼 기둥이라는 확고한 차원 뜻입니다.)

③ R 분석가들의 진리 엔진! 데이터 내부 장기 구조 엑스레이 MRI 텍스트 출력: str()

모든 데이터 에러 고수분들이 버그 에러를 잡을 때 가장 먼저 병원 진료보듯 제일 많이 손이 가는 R 언어 역사상 가장 중요한 디버깅 진단용 함수입니다. 물리적 껍질 구조(Structure)의 약자로, 데이터 프레임 뼈대 안에 있는 모든 변수(개별 열)의 영어 컬럼 스키마 이름과 함께, 각 열이 “숫자형 더블(num)” 인지 “문자형 텍스트(chr)”인지 타입 정보를 위에서부터 순서대로 샅샅히 스캔 까발려 콘솔로 보여줍니다.

str(my_df)
> 'data.frame':	3 obs. of  3 variables:
>  $ Name : chr  "김철수" "이영희" "박지성"
>  $ Age  : num  25 30 22
>  $ Score: num  85.5 92.0 78.5

이게 왜 대단할까요? 만약 덧셈이 되어야 살 수 있는 Age(나이) 변수를 누군가 외부 고객이 실수로 엑셀에다가 “스물다섯살”, “20대” 라고 미친 문자로 입력해서 R 파서가 이 컬럼 전체를 chr(문자형)으로 오염시켜 잡아버렸다면 어떨까요? 콘솔로 돌린 str()은 산술 통계 에러가 터지기 전, 이러한 악성 잠재적 스키마 변질 문제점들을 전처리 직전 단계 시점에 시원하게 속속들이 까발려(?) 발견해 주는 무적의 의료용 엑스레이 스캐너 역할을 묵묵히 수행합니다.


수학 기반인 행과 열이 엄격히 존재 지탱하는 절대적 2차원 표, “Data Frame(데이터 프레임)” 철학을 논리적으로 완벽히 이해하셨다면 이제 본격적인 데이터 파싱 추출(색인 필터링)과 딥러닝 분석 알고리즘 작전을 마음놓고 수행할 가장 넓고 튼튼한 전투용 무대를 내 콘솔 메모리 상에 완전히 완성하신 것입니다!


당신이 좋아할 만한 콘텐츠

by Google Adsense


관련 글 보기