욱이의 냉철한 공부

[R, 정리] 데이터 타입 이해하기 본문

데이터분석/R

[R, 정리] 데이터 타입 이해하기

냉철한 욱 2021. 6. 22. 03:21

https://warm-uk.tistory.com/64?category=810499 

 

[R, 정리] R의 특징과 장점, 사용이유

R은 제가 가장 자주, 잘 사용하는 툴이자 언어에요. 처음 데이터 공부를 R로 시작했기 때문에 그런 것일지도 모릅니다. Python을 자주 사용하면서 익히고 싶지만.. 아직 스몰데이터만 만져본 저에

warm-uk.tistory.com

 

=> 먼저 R에 대해서 이해하기

 

목차

1. 기본 데이터 타입

2. 뭉탱이 데이터 타입 - 벡터(vector)

3. 뭉탱이 데이터 타입 - 행렬(matrix)

4. 뭉탱이 데이터 타입 - 배열(arrays)

5. 뭉탱이 데이터 타입 - 리스트(list)

6. 뭉탱이 데이터 타입 - 데이터프레임(DataFrames)

7. 데이터 타입 변환

8. 데이터 타입 기본 함수 요약


 

 

1. 기본 데이터 타입

Type Ex
numeric 1,2,3,4,5 1,2341, -4.523
character "uk", "genius", "175"
logical TRUE, FALSE
factor suncheon seoul seoul suwon
Levels : suncheon seoul suwon

1) 숫자형 numeric

- 숫자로 이루어진 데이터 타입

- 수학적 연산이 가능한 데이터 타입

- 문자가 데이터 집합에 있으면 전체가 문자형으로 변경된다.

 

2) 문자형 character

- " " 또는 '' 로 표시한다.

- " " 내에는 임의의 어떤 값이든 들어갈 수 있다.

- 문자열은 연산이 불가능하다.

 

3) 논리형 logical

- Binary 값을 갖는 데이터 타입

- TRUE는 참을 의미하고, FALSE는 거짓을 의미한다.

- FALSE는 0이고 0 이외는 TRUE이다.

 

4) 팩터 factor

- 범주형 데이터를 표현하기 위한 데이터 타입

- factor()로 팩터 생성한다.

 

5) 뭉탱이 데이터 타입

- Vactor

- Matrix

- Array

- List

- DataFrame

 

 

 

 

 

2. 뭉탱이 데이터 타입 - 벡터(vector)

- 벡터는 한가지 데이터 타입만을 저장할 수 있는 1차원 배열

- 숫자만 저장하는 벡터, 문자만 저장하는 배열 존재한다.

- c()를 사용하여 생성한다. c는 combine을 의미한다.

 

- 벡터 생성 및 추출

vec<-c(1,2,3,4,5) : vec라는 변수에 데이터 저장

vec[2] : 2번째 요소 값만 보여준다.

vec[-2] : -붙으면 2번째만 빼고 보여준다.

vec[-1:-3] : 1번에서 3번 요소까지 뺀 나머지 값들만 보여준다.

vec[2:4] : 2번에서 4번 요소까지의 값들으 보여준다.

vec[2]<-6 : 2번째 요소값을 6으로 변경한다.

vec<-c(vec,7) : 7이라는 값을 새롭게 추가한다.

 

- 벡터함수들

x <- c(1,2,3,4,5)

mean(x) : 평균

order(x) : 정렬

rev(x) : 내림차순 정렬

range(x) : 최소값 최대값으로 범위 출력

sd(x) : 표준편차

sort(x) : 정렬

sort(x,decreasing=TRUE) : 내림차순 정렬

length(x) : 길이 출력

 

- 벡터형 자료의 일부를 바꾸는 법

x <- c(1,4,6,8,9)

y <- replace(x, c(2,4), c(32,24) ) : 2번째 4번째를 요소값을 32, 24로 바꾼다.

w <- append(x,y) : x와 y를 합친다.

z <- append(x,y, after=2) : x의 2번째 요소값 뒤에서부터 y의 요소값들을 투입한다.

 

- 벡터끼리 연산 자유롭다.

c(1,2) + c(4,5)

c(1,2,3) + 1

 

- 벡터형에 함수를 이용하여 데이터를 생성 할 수 있다.

vector <- -5:5 : -5부터 5까지의 요소값들이 vector변수에 저장된다.

vector <- seq( from=-5, to=5, by=1) : -5부터 5까지의 요소값들이 vector변수에 저장된다.

vector <- seq(10) : 1부터 10까지의 요소값들이 vector변수에 저장된다.

 

- 벡터형에 집합 연산을 적용한다

x <- c(1,2,3)

y <- c(4,2,8)

union(x,y) : x와y를 합친다.

intersect(x,y) : x에 있는 요소값들에서 y의 요소값들을과 겹치는 값들을 출력한다.

setdiff(x,y) : x에 있는 요소값들에서 y의 요소값들을 뺀다.

 

- 벡터형에 문자 데이터 조작하는 기능

x <- rep( c("a","b","c"), times=4) : a b c를 반복해서 4번 저장한다.

unique(x) : x는 a, b, c, a, b, c, a, b, c, a, b, c 이렇게 12개의 요소값이 저장되어 있지만 유일값 a, b, c만 출력한다.

match(x, c("a")) : x에서 a값만 해당하는 요소값을 찾는다.

substring("abcdefghijklmn", 2,5) : 2번째에서 5번째까지의 문자열을 출력한다. 즉 bcde가 된다.

 

 

 

 

 

 

 

 

3. 뭉탱이 데이터 타입 - 행렬(matrix)

- 행렬은 한가지 데이터 타입만을 저장할 수 있는 2차원 데이터 배열이다.

- matrix()를 사용하여 생성한다.

- 생성 시 미리 크기를 지정해야 한다. (nrow=, ncol=)

- 행렬 생성, 기본적으로 열이 기준이다.

mat1 <- matrix(c(1,2,3,4))

mat2 <- matrix(c(1,2,3,4),nrow=2)

mat3 <- matrix(c(1,2,3,4),nrow=2,byrow=T) : byrow=T로 인하여 행부터 채워나간다.

 

- 행렬 출력

mat3[ ,1] : 모든 행의 1열 값 출력한다.

mat3[1,] : 1행의 모든 열 값을 출력한다.

mat3[1,1] : 1행 1열의 값을 출력한다 .

 

- 벡터를 하나의 행렬로 만든다.

vec1 <- c(1,2,3)

vec2 <- c(4,5,6)

vec3 <- c(7,8,9)

mat1 <- rbind(vec1,vec2,vec3) : 행 방향으로 합친다

mat2 <- cbind(vec1,vec2,vec3) : 열 방향으로 합친다

 

- 행렬 이름 만들기.

colnames( mat1) <- c("A","B","C")

 

- 행렬 데이터 추출

x <- matrix( c(1,2,3,4,5,6), nrow=2)

colnames(x) <- c("First","Second","Third")

x[1,"First"] : 열 이름을 추출한데 사용 할 수 있다.

x[1,2]

 

 

 

 

 

 

 

4. 뭉탱이 데이터 타입 - 배열(arrays)

- 3차원 이상의 형태로 데이터를 모아 놓을 수 있다.

- 한 가지 데이터 타입만을 저장할 수 있다.

- array()함수를 사용하여 생성한다.

 

- 배열 생성

x <- array(1:36,c(4,3,3)

 

 

 

 

 

 

 

5. 뭉탱이 데이터 타입 - 리스트(list)

- 서로 다른 데이터를 인위적으로 묶어 놓았다.

- 구성요소로 어떤 데이터 형태도 가질 수 있는 1차원 데이터형이다

- 리스트 안에 벡터, 혹은 다른 리스트, 데이터프레임 전부 들어올 수 있다.

- 이 리스트가 JSON을 R에서 처리하는데 도와줄 것이다.

 

- 리스트 생성

list1 <- list(name='donguk' , info=c(175,70), region="suwon", smoking=FALSE)

"donguk" c(175,70) "suwon" FALSE

1 : name 2 : info 3 : region 4 : smoking

 

- 리스트 출력

name <- 이 부분을 Key 부분이라고 한다.

"donguk" <-- 이 부분을 Value 부분이라고 합니다.

list1$name : name의 value를 출력한다.

list1[1:2] : 1번째 요소값부터 2번째 요소값까지 출력한다.

 

- 리스트 추가

list1$birth <- '1992-12-20'

 

- 하나의 key 에 두개의 value 동시에 넣기, 즉 벡터 집어 넣기

list1$region <- c("suwon", "suncheon")

 

- 특정 값 삭제하기

list1$birth <- NULL

 

 

 

 

 

 

 

6. 뭉탱이 데이터 타입 - 데이터프레임(DataFrames)

- 구성요소로 어떤 데이터 형태로든 가질 수 있는 2차원 데이터 타입이다.

- Column마드 데이터 타입이 다를 수 있다. (숫자, 문자, factor 다 다를 수 있다.)

- 테이블이다.

- data.frame()으로 생성한다.

 

- 데이터프레임 생성

ID NAME HEIGHT WEIGHT
1 donguk 175 70
2 eunsub 175 64
3 hansol 180 80
4 minyoung 178 68

 

id <-c(1,2,3,4)

name <-c("donguk","eunsub","hansol","minyoung")

height <-c(175,175,180,178)

weight <- c(70,64,80,68)

friend <- data.frame(ID=id,NAME=name,HEIGHT=height,WEIGHT=weight)

 

- 데이터프레임 출력

friend : 전체 출력한다.

friend$HEIGHT : HEIGHT 만 출력한다. 벡터로 출력

friend[1,3] : 1번째 행, 3번째 열 값을 출력한다.

friend[1,] : 1번째 행의 모든 값을 출력한다. (, 이후에 비어있으면 모든 열 값을 뜻한다.)

friend[,3] : 3번째 열의 모든 값을 출력한다.

 

- 데이터프레임 원하는 조건만 출력

friend[friend$HEIGHT<=175,] : HEIGHT 값이 175 이하인 모든 행을 출력한다.

friend[friend$HEIGHT<=175,4] : HEIGHT 값이 175 이하이며 4번째 열 값을 출력한다.

friend[friend$HEIGHT<=175,c(3,4)] : HEIGHT 값이 175 이하이며 3번째, 4번째 열 값을 출력한다.

friend[friend$WEIGHT==70,] : WEIGHT 값이 70인 모든 행을 출력한다.

friend[friend$NAME=='donguk',] : NAME 값이 'donguk'인 모든 행을 출력한다.

 

- 데이터프레임 subset( )으로 원하는 조건만 조회

subset(friend,HEIGHT<=175) : HEIGHT 값이 175 이하인 모든 행을 출력한다.

subset(friend,WEIGHT==70) : WEIGHT 값이 70인 모든 행을 출력한다.

subset(friend,NAME=='donguk') : NAME 값이 'donguk'인 모든 행을 출력한다.

 

- 데이터프레임 값 변경

friend[1,3] <- NA : 1번째 행, 3번째 열 값을 null로 변경한다.

friend[friend$HEIGHT==175,4] <- 176 : HEIGHT 값이 175 이하이며 4번째 열 값을 176으로 변경한다.

friend[friend$NAME=='donguk',] <- NA : NAME 값이 'donguk'인 모든 행 값을 null로 변경한다.

 

- 데이터 프레임 합치기 : rbind( ) , cbind( )

id <- c(5,6)

name <- c("heagun","daeyoung")

hegiht <- c(177, 182)

weight <- c(65,75)

friend2 <- data.frame(ID=id,NAME=name,HEIGHT=height,WEIGHT=weight)

newfriend <- rbind(friend,friend2) : 행방향으로 합친다.

region <- c("suwon","soeul","suwon","suncheon")

newfrined <- cbind(friend,region) : 열방향으로 합친다. ,열 개수만 맞으면 벡터도 합칠 수 있다.

 

 

 

 

 

 

 

7. 데이터 타입 변환

 

- 한 데이터타입으로 통일되어야 하는 집합에 있다면 대빵은 문자형이다.

벡터를 예로 들어보자. 벡터 안에서는 전부 한 데이터타입으로 통일 되어야 한다.

- c(5, "two") : 전부 문자형으로 변환된다.

- c(TRUE, "a") : 전부 문자형으로 변환된다.

- c(1, "TRUE") : 전부 문자형으로 변환된다.

- TRUE + 5의 결과값은 TRUE가 1로 변환되어 6이 되어진다.

 

 

 

 

 

 

 

 

8. 데이터 타입 기본 함수 요약