ANX1-Z3R0의 불안극복(不安克服)

003. R언어특(징) 본문

CODING/[R] Big Data

003. R언어특(징)

ANX1Z3R0 2019. 3. 19. 16:32


일단 기본 데이터 유형부터 보자면,


수치형(Numeric) 


숫자로 되어 있으며 정수형과 실수형이 있음 

예를 들면 5.5


문자형(Character) 


하나의 문자 또는 문자열로 되어 있으며, “”또는 “”로 묶여있음 

예를 들면 "문자”

 

논리형(Logical) 


참과 거짓의 논리값으로 TRUE나 FALSE를 가짐 

예를 들면 TRUE 나 FALSE


복소수형(Complex)


 실수와 허수로 이루어진 복소수 

예를 들면 3-2i


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


특이한 데이터 유형도 볼까?


NULL


존재하지 않는 객체로 지정할 때 사용


NA


Not Available의 약자로 결측치를 의미


NaN

Not available Number의 약자로,

수학적으로 계산이 불가능한 수를 의미 


예: > sqrt(-3) [1] NaN 경고메시지(들): In sqrt(-3) : NaN이 생성되었습니다 


Inf, -Inf 

∞ , -∞


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


연산자는?


산술 연산자


a**n , a^n 거듭제곱

ex) 2^3=8 , 3**2=9


%/% 몫

13 %/% 4 = 3


%% 나머지

13 %% 4 = 1


할당 연산자


x = 1

x <- 1

1 -> x


모두 같은 의미로 사용된다.


논리 연산자


AND : &, &&

OR : |, ||



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


근데 만약에 내가 선언해놓고 어떤 데이터 유형인지 내가 모르면 어떡해? ㅜ


mode() 함수


변수의 데이터 형태를 알려줌


예를 들어 x1<-5.5 라고 선언하여

mode(x1)라고 치면,

이렇게 알려줌

아니 이렇게 친절할 수가!!!!


게다가


is.numeric||character||logical||complex() 함수


에게 물어보면,

이렇게 답해줌


와우!


데이터형 우선순위는


문자형(Character) > 복소수형(Complex) > 수치형(Numeric) > 논리형(Logical)

인데,


x1 <- c(1, "Love", TRUE, 2+3i)로 선언하면

mode(x1)은

"character"가 된다.


참 특이하다.


하나 더 특이한 점은,


한 벡터 (x1 같이 여러 정보를 묶어놓은 경우를 말함.)안에서는

데이터형이 통일되는 특징이 있는데,

이것을 강제 변환이라고 한다.


가장 우위에 있는 데이터 타입인 복소수로 통일됨.


통일 됀걸 볼 수 있다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


데이터 형태


벡터(Vector), 행렬(Matrix), 배열(Array), 데이터프레임(Data frame), 요인(Factor), 리스트(List)

가 있지만,


가장 대중적인 벡터는, 위에서 이미 봤듯이

C()함수

로 생성할 수 있다.


규칙이 없는 벡터를 만들기 좋다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


그리고 1씩 증가하는 연속적인 값을 벡터에 넣어줄때,

: 

콜론을 사용하면 좋다.

시작점인 1.3부터 1씩 증가해 5보다 작은 4.3에서 끝나게 된다.


그리고, 콜론보다 더 큰 범주에 있는 

seq()함수는

from to by를 설정하여

콜론보다 증감값을 설정해주기 좋다.


두 포맷 다  seq(from,to,by)형식만 지키면 가능하다.


Rep()함수

함수에 지정된 데이터를 복사해준다.


format=> x1<-(값,옵션(times||each)=횟수)

신기하다.

 

names()함수

이름을 지정해주는 함수.


말그대로 "이름"만 지정해 준다.

말그대로 "이름"만 <- character로 형 변환이 되지 않는다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


인덱싱(indexing)

은 [ ](대괄호) 으로 이루어진다.

format <-배열이름[-c(배열의 순서)]


인덱싱은 주어진 조건에 따라 "색출"만 해준다.

따라서 원본은 변하지 않는다.


물론, 색출된 결과를 다시 넣어서 원본을 바꿀 수도 있다.

이렇게!


벡터끼리의 연산

> c(1,2,3) + c(4,5,6)

[1] 5 7 9

각 위치별로 더해진다.


Numeric벡터 + 수

> c(1,2,3) + 1

[1] 2 3 4

한자리씩 더해진다.


두 벡터 데이터의 연산

> var1 <- c(1,2,3)

> var2 <- c(3,4,5)

> var1 + var2

[1] 4 6 8

각 자리씩 더해진다.


Numeric벡터 + Character벡터

> var3 <- c('3','4',5)

> var1 + var3 

오류가 난다.

(이건 좀 융통성이없네;;)


벡터 합치기(인덱스가 바뀜)

> union(var1,var3) <-- 여러 벡터를 합칠 경우 사용합니다

> [1] "1" "2" "3" "4" "5"


setdiff()함수
두 벡터간 다른 내용을 찾아줌
format =>setdiff(기준벡터,비교벡터)
기준벡터를 기준으로 차집합을 리턴해줌
> var1
[1] 1 2 3
> var2
[1] 3 4 5
> setdiff(var1,var2)
[1] 1 2
setdiff(var2,var1) 
[1] 4 5

intersect()함수
두 벡터간 같은 내용을 찾아줌.
format =>intersect(벡터1,벡터2)
교집합

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

재사용 규칙

벡터는 원소대 원소로 연산이 이루어진다. 만약에 길이가 다른 원소를 연산했을때는 재사용 규칙을 적용한다. 

> x1 <- c(5, 0, -4)

> x1+3     ## x1의 길이 3과 길이가 1인 연산, 3을 다시 가져와서 더해줌(재사용)

[1]  8  3 -1


> x1*2

[1] 10  0 -8


> x1 <- c(5, 0, -4, 2)

> x2 <- c(2, 1)

> x1 / x2

[1]  2.5  0.0 -2.0  2.0



아흥!



'CODING > [R] Big Data' 카테고리의 다른 글

빅데이터 요점 정리  (1) 2019.07.02
002. R언어 하는 법  (0) 2019.03.15
001. START  (0) 2019.03.15
Comments