https://tonnykang.tistory.com/264
R언어
R의 데이터 타입
문자형 타입
Character는 문자형 타입으로 따옴표 혹은 쌍따옴표로 표시할 수 있다
각 변수의 타입은 Class 함수를 이용해 확인 할 수 있다
> class('abc')
[1] "character"
숫자형 타입
- numeric(숫자형)
- double(실수)
- integer(정수)
- complex(복소수)
등이 있다
Inf는 Infinite의 약자로 무한대를 나타내며 -Inf도 있다
논리형 타입
logical은 논리형 타입으로 참 혹은 거짓을 의미한다
NaN, NA, NULL
NaN은 ‘Not a Number’의 약자 ex) 음의 제곱근
NA는 ‘Not Available”의 약자이며
NULL은 결측값을 의미한다
R 기본 문법
대입 연산자
#왼쪽에 값을 대입
string <- 'abc'
number1 <<- 15
logical = NA
#오른쪽에 값을 대입
"data" -> string2
Inf ->> number2
산술 연산자
%/% #두 숫자의 나누셈의 몫
%% #두 숫자의 나눗셈의 나머지
나머지는 파이썬과같은 다른 언어들과 비슷함
R 데이터 구조
벡터
타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조다
concatenate의 c를 써서 데이터를 묶을 수 있다
> v4 <- c(3, TRUE, FALSE)
> v4
[1] 3 1 0
> v5 <- c('a', 1, TRUE)
> v5
[1] "a" "1" "TRUE"
벡터를 생성할 때 콤마로 직접 성분을 입력할 수 있지만
콜론 (:)을 활용해 시작값과 끝값을 지정해 벡터를 생성할 수도 있다
> v1 <- c(1:6)
> v1
[1] 1 2 3 4 5 6
행렬
2차원 구조를 가진 벡터이다
벡터의 성질을 가지고 있으므로 저장된 모든 데이터는 같은 타입이어야한다
그렇지 않을 경우 자동으로 타입 변환이 된다
matrix를 사용할 경우 nrow를 사용하여 행의 수를 결정하거나 ncol을 사용하여 열의 수를 결정할 수 있다
> m1 <- matrix( c(1:6), nrow=2)
> m1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> m2 <- matrix( c(1:6) , ncol = 2)
> m2
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
matriz를 사용하여 행렬을 만들 경우 행렬의 값들이 열로 저장되는 것을 볼 수 있다
하지만 byrow옵션에 T(TRUE)를 지정하면 값들이 열이 아닌 행으로 저장된다
> m3 <- matrix( c(1:6) , nrow =2, byrow=T)
> m3
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
행렬을 만드는 또 다른 방법은
벡터에 차원을 dim함수를 사용해 만들어주는 것이다
> v1 <- c(1:6)
> v1
[1] 1 2 3 4 5 6
> dim(v1) <- c(2, 3)
> v1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
배열
3차원 이상의 구조를 갖는 벡터를 배열이라고 한다
array를 사용하여 배열을 만들 수 있으나 몇차원 구조를 갖는지 dim 옵션에 명시해야한다
> a1 <- array( c(1:12), dim = c(2, 3, 2))
> a1
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
리스트
리스트는 데이터 타입 데이터 구조에 상관없이 사용자가 원하는 모든 것을 저장할 수 있는 자료구조이다
> L <- list()
> L[[index]] <- you can put anything, even an array as an element
데이터프레임
데이터 분석을 위한 2차원 구조를 갖는 관계형 데이터 구조로서 R에서 가장 많이 활용되는 데이터 구조이다
여러 개의 벡터로 구성되어 있기 때문에 각 열은 서로 다른 타입의 데이터를 가질 수 있다
> v1 <-c(1, 2, 3)
> v2 <- c('a', 'b', 'c')
> df1 <- data.frame(v1, v2)
R 내장 함수
기본함수
> help(paste) # 명령어 입력 후 우측 하단 도움말에 결과가 출력된다
> ?paste
> paste( 'This is', 'a pen')
[1] "This is a pen"
> seq( 1, 10, by=2)
[1] 1 3 5 7 9
> rep(1, 5)
[1] 1 1 1 1 1
> a <- 1
> rm(a)
> a
ERROR: object 'a' not found
> ls()
[1] prints all the list of current variables
통계함수
나머지는 딱 보면 무슨함수일지 감이 오는데
> sd() # 표준편차를 구한다
> range() # 파이썬과 다른 최소 최대 값을 출력
> summary() # Min. 1st Qu. Median Mean 3rd Qu. Max.
# 6개의 요약 값을 출력한다
R 데이터 핸들링
데이터 이름 변경
행렬, 배열, 데이터프레임과 같이 2차원 이상의 데이터 구조는 colnames와 rownames 함수를 사용하여 행과 열의 이름을 알 수 있고 지정할 수 있다
> m1 <- matrix(c(1:6), nrow=2)
> colnames(m1) <- c('c1', 'c2', 'c3')
> rownames(m1) <- c('r1', 'r2')
> m1
c1 c2 c3
r1 1 3 5
r2 2 4 6
> colnames(m1)
[1] "c1" "c2" "c3"
> rownames(m1)
[1] "r1" "r2"
데이터 결합
데이터를 행으로 결합하는 rbind와
열로 결합하는 cbind가 대표적이다
> v1 <- c(1, 2, 3)
> v2 <- c(4, 5, 6)
> rbind(v1, v2)
[,1] [,2] [,3]
v1 1 2 3
v2 4 5 6
> cbind(v1, v2)
v1 v2
[1,] 1 4
[2,] 2 5
[3,] 3 6
결합하는 과정에서
행 또는 열의 수가 다를 경우 더 큰 값을 기준으로
재사용 규칙을 활용해 결합된다
> v1 <- c(1, 2, 3)
> v2 <- c(4, 5, 6, 7, 8)
> rbind(v1, v2)
[,1] [,2] [,3] [,4] [,5]
v1 1 2 3 1 2 #재사용 규칙
v2 4 5 6 7 8
통계분석에 자주 사용되는 R함수
문자연산
> data <- "This is a pen"
> nchar(data)
[1] 13
> grepl( 'pen', data)
[1] True
벡터 연산
cov() # 두 수치 벡터의 공분산을 구한다
cor() # 두 수치 벡터의 상관계수를 구한다
행렬 연산
t() # 전치행렬을 구한다
%*% 두 행렬을 곱한다
산점도
https://tonnykang.tistory.com/266?category=1104218
'컴퓨터공학 > ADsP' 카테고리의 다른 글
ADsP 데이터 분석 준 전문가 정리 10 (58) | 2024.07.16 |
---|---|
ADsP 데이터 분석 준 전문가 정리 9 (50) | 2024.07.15 |
ADsP 데이터 분석 준 전문가 정리 8 (53) | 2024.07.14 |
ADsP 데이터 분석 준 전문가 정리 6 (51) | 2024.07.13 |
ADsP 데이터 분석 준 전문가 정리 5 (45) | 2024.07.12 |