R 기초강의(7) - R 자료구조(factor, list)
R 강좌는 여러 절로 구성되어 있습니다.
- R 기초강의(1) - R 개요
- R 기초강의(2) - R Operator
- R 기초강의(3) - R Data Type
- R 기초강의(4) - R 패키지와 함수
- R 기초강의(5) - R 자료구조(vector)
- R 기초강의(6) - R 자료구조(matrix)
- R 기초강의(7) - R 자료구조(factor, list)
- R 기초강의(8) - R 자료구조(data frame)
- R 기초강의(9) - R 문자열 처리
- R 기초강의(10) - R 데이터 입출력
- R 기초강의(11) - R 제어문 및 함수
- R 기초강의(12) - R 기초 Exercise
- R 기초강의(13) - R Crawling
- R 기초강의(14) - R 데이터 조작
- R 기초강의(15) - R 데이터 조작 실습
- R 기초강의(16) - R 데이터 정제
- R 기초강의(17) - R 기초 통계 함수
- R 기초강의(18) - R Graph
- R 기초강의(19) - R KoNLP
- R 기초강의(20) - R 연습문제
- R 기초강의(21) - R ggmap
- R 기초강의(22) - R 정형데이터 처리
R factor
R에서의 factor
는 범주형 데이터를 표현하기 위한 데이터 형태입니다. 범주형 자료로 표현되면 집단별로 통계분석과
같은 작업을 수행할 수 있습니다.
부연설명하자면, 범주형 데이터란 데이터가 사전에 정의된 특정 유형으로만 분류되는 경우를 의미합니다. 방의 크기를
“대”, “중”, “소”로 나누어 표현하고 있을 때 특정 방의 크기를 “대” 라고 명시한다면 이는 범주형 데이터 입니다.
그리고 범주형 변수가 담을 수 있는 값의 목록(“대”, “중”, “소”)을 level
이라고 합니다.
의미를 잘 생각해보면 factor는 저장할 값 뿐만 아니라 값의 level도 명시해야 합니다. 범주형 데이터는 또 다시 명목형과 순서형이 있습니다. 명목형은 값들 크기 비교가 불가능한 경우를 의미하고(좌파,우파) 순서형 데이터는 순서를 둘 수 있는 경우를 의미합니다.(대, 중, 소)
factor()의 특징
- 입력 인자는 일반적으로 vector를 사용합니다.
levels
: 그룹으로 지정할 문자형 vector를 지정합니다. 만약 사용하지 않으면 오름차순으로 데이터를 자체적으로 그룹지정 합니다.ordered
: TRUE면 순서형, FALSE면 명목형 데이터를 뜻합니다. 기본값은 FALSE입니다. level에 지정한 순서대로 값의 크기가 정해집니다.
실습
- 6명의 혈액형 데이터를 vector에 저장하고 vector를 factor로 변환, 확인하는 코드를 작성해보자.
# factor 생성
var1 = c("A", "O", "AB", "B", "A", "O", "A")
var1
var1_factor = factor(var1)
var1_factor # factor이기 때문에
# data와 level이 같이 출력
nlevels(var1_factor) # factor의 level개수
# 4
levels(var1_factor) # factor의 level 목록
# "A" "AB" "B" "O"
is.factor(var1_factor) # factor인지를 판단
ordered(var1) # 순서형 factor 생성
# level과 order 지정
# level에 지정이 안되면 NA로 처리
var1_factor = factor(var1,
levels = c("O","A","B"),
ordered = T)
var1_factor
var1_factor = factor(var1,
levels = c("O","A","B","AB"),
ordered = T)
var1_factor
levels(var1_factor) = c("A형","AB형","B형","O형")
levels(var1_factor)
var1_factor # 결과를 꼭 확인해보자
실습
- 남성과 여성의 데이터로 factor를 생성한 후 빈도수에 대한 chart를 그려보자
# 남성과 여성의 데이터르 factor 생성 후 chart 그리기
gender = c("MAN", "WOMAN", "MAN", "MAN", "WOMAN")
gender
factor_gender = as.factor(gender)
factor_gender
table(factor_gender) # 빈도수 구하기
plot(factor_gender) # 빈도수로 막대그래프 생성
R list
list
는 일반적으로 통계분석의 결과를 저장할 때 많이 사용하는 데이터 형태입니다. list의
원소로 scalar, vector, matrix, array, data frame, factor, 또 다른 list를 가질 수 있습니다.
list는 vector와 유사한 선형 자료구조입니다. list 하나의 메모리 영역에는 key와 value가 한 쌍으로 저장됩니다. Python의 dict와 유사한 자료구조라고 생각하시면 됩니다. 단, list는 dict와는 다르게 순서가 존재합니다.
실습
- 지금까지 배운 자료구조들을 list안에 저장해보자.
# list
var_scalar = 100 # scalar
var_scalar
var_vector = c(10,20,30) # vector
var_vector
var_matrix = matrix(1:4,nrow = 2,ncol = 2) # matrix
var_matrix
var_array = array(1:8, dim=c(2,2,2)) # array
var_array
var_df = data.frame(id=1:3, age=c(10,15,20)) # data frame
var_df
var_factor = factor(c("A","B","C","A","B","A")) # factor
var_factor
my_list = list(var_scalar,
var_vector,
var_matrix,
var_array,
var_df,
var_factor)
my_list
위의 예에서 처럼 list() 함수를 이용하여 list를 생성합니다. list에 저장된 데이터를 출력하면
[[n]]
과 [n]
형식으로 출력되는데 [[n]]
은 리스트를 구성하는 하나의 원소에서 key
에 해당하고
[n]
은 value에 해당합니다.
# list 생성
myList <- list("Hong","길동",20)
myList
# list 자료구조를 vector 자료구조로 변환
myVector = unlist(myList)
myVector
# key와 value형식으로 list 생성
member = list(name=c("홍길동","김길동"),
age=c(20,30),
address=c("서울","수원"),
gender=c("남자","여자"))
member
# list에서 key는 $를 이용해서 표시
member$age # 20 30
member$age[1] # 20
member[[1]] # "홍길동" "김길동"
member[["name"]] # "홍길동" "김길동"
member$name # "홍길동" "김길동"
member[2:3]
End.
이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!