변수와 데이터객체(구조) 유형
복합 데이터 구조
객체유형 | 요소(원소) | 차원 | 데이터 종류(동질성/이질성) | 관련코드(함수) |
팩터(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
'Data·AI > R 데이터분석' 카테고리의 다른 글
R. 데이터셋 로딩하기 - 플레인 텍스트 파일 (0) | 2020.08.21 |
---|---|
R. 데이터셋 로딩하기 - 샘플데이터셋 (0) | 2020.08.21 |
R. 변수와 데이터객체(구조) 유형 - 기본 데이터 구조 (0) | 2020.08.20 |
009.한국인의 삶을 파악하라! (종교 유무에 따른 이혼율, 지역별 연령대 비율) (0) | 2019.05.25 |
008.한국인의 삶을 파악하라! (직업별 월급차이, 성별 직업 빈도) (0) | 2019.05.25 |
댓글