본문 바로가기
Data·AI/R 데이터분석

R. 변수와 데이터객체(구조) 유형 - 복합 데이터 구조

by hyun-am 2020. 8. 20.

변수와 데이터객체(구조) 유형

 

복합 데이터 구조

 

객체유형 요소(원소) 차원 데이터 종류(동질성/이질성) 관련코드(함수)
팩터(factor) 단수/복수 1차원 숫자/문자/논리 유형 중 단일 유형으로만 구성 x <- factor()
데이터 프레임
(data frame)
단수/복수 2차원 숫자/문자/논리 유형 중 복수 유형으로 구성 가능
-> 단, 변수(열,컬럼,필드)별로 단일 유형으로만 구성
x <- data.frame()
리스트(list) 단수/복수 다차원 스칼라부터 데이터프레임까지, 또한 리스트까지 포함한 모든 유형의 데이터로 구성할 수 있음
-> 단, 요소별로 단일한 데이터 유형으로만 구성
x <- list()


데이터 프레임

데이터 프레임 생성

다음과 같이 데이터 프레임을 생성하기 위해 미리 벡터 변수를 정의합니다. 

그 후 data.frame()을 이용해서 데이터 프레임을 생성하겠습니다.

name <- c("홍길동", "Jessica", "장그래", "제인", NA, "최강타")
gender <- c(1, 2, NA, 2, 1, 1) # 1: 남자, 2: 여자
job <- c("학생", NA, "직장인", "주부", "직장인", "직장인")
age <- c(19, 55, 23, 35, 45, NA) # 연령
grade <- c("A", "C", "B", NA, NA, "A") # 회원등급
total <- c(NA, 18.5, 23.7, 27.0, 13.5, 47.2) # 총구매금액(만원)
survey <- c(3, 4, 2, 5, 5, 3) # 온라인쇼핑 만족도
result <- c(TRUE, T, FALSE, TRUE, NA, F) # 이벤트반응

# 벡터변수를 데이터프레임으로 결합
customer <- data.frame(name, gender, job, age, grade, survey, total, result)
class(customer)

 

이제 class를 이용해 type을 확인하고 dataframe이 어떻게 생겼는지 보겠습니다. 

 

customer
View(customer)

customer

View(customer)

데이터 프레임 인덱싱

 

1. $를 이용한 컬럼 인덱싱

customer$name

그러면 다음과 같이 벡터형의 데이터가 출력이 됩니다.

2. [ ]에 단일 변수 컬럼명 조회

customer['name']

또한 컬럼명 대신 컬럼의 인덱스를 넣어서 조회를 할 수 있습니다.

customer[1]

3. [ ]에 c( )를 이용한 복수 컬럼명 조회

customer[c("gender", "job", "age")]
customer[c(2, 3, 4)]

# 둘이 같습니다.

4. [ ]에 마이너스(-)를 이용한 불필요한 컬럼 제외

customer[-c(2, 4)]

데이터 프레임 구조 확인하기

str( )를 활용하면 데이터 프레임의 구조를 확인할 수 있습니다. 여기서 str은 structure의 줄임말 입니다.

str(customer)

⭐️  데이터프레임 생성시 팩터 변수 생성 옵션 사용유무를 결정하는 stringAsFactors=(TRUE or FALSE)

customer <- data.frame(name, gender, job, age, 
                       grade, survey, total, result,
                       stringsAsFactors = FALSE)

 

일반 변수를 팩터형 변수로 바꾸기

 

여기서 일반 변수를 팩터형을 바꾸는 이유는 변수 컬럼중에서 항목의 유형을 구별하는 목적을 가진 범주형 데이터를 나타내기 위해서 팩터형 이라는 유형을 사용해야 합니다.

customer$name <- factor(customer$name)
customer$name

customer$gender <- factor(customer$gender)
customer$gender

이렇게 Levels라는 항목이 같이 출력되는 것을 확인할 수 있습니다.

 

팩터형 변수를 일반 변수로 바꾸기

먼저 그 변수에 해당하는 적절한 자료형으로 변형을 해줘야 합니다 예를들면 이름같은 것들이 오면 character자료형을 사용하고

age와 같은 숫자 항목이 있으면 integer를 입력합니다.

customer$name <- as.character(customer$name)
customer$name

customer$gender <- as.integer(customer$gender)
customer$gender

 

 

리스트 객체

 

리스트 객체 생성하기

리스트 객체는 스칼라∙벡터∙행렬∙배열∙데이터프레임과 타 리스트까지 결합이 가능합니다.

 

이때까지 만들었던 데이터들을 모두 결합해서 리스트로 표현하겠습니다.

 

mydata <- list(my1 = a, my2 = h3, my3 = mxr, my4 = out, my5 = customer, my6 = xr)

mydata

 

⭐️  list도 다른것들과 마찬가지로 $, ['항목이름'], [인덱스번호]로 데이터를 인덱싱 할 수 있습니다. 

 


이 자료는 https://www.youtube.com/channel/UChPuesN49tcqQqYRQHrLCuw를 참조하여 작성하였습니다.

 

K-ICT 빅데이터센터

판교 K-ICT 빅데이터센터 공식 유튜브 채널입니다.

www.youtube.com

 

댓글