영상의학 (Radiology)/빅데이터 (Big data)

Big data_day 04 (빅데이터 공부 4일차)

Felix89 2020. 6. 1. 23:06

오늘은 심흥섭 교수님의 강의 4가지 강의를 몰아서 들었다. 본격적으로 연산자들을 배우고, 벡터 생성에 대한 여러가지 함수들을 배워보았다. 아직까지는 초급 단계를 배우고 있는 거 같다.


제 9강. "R의 연산자"

a) 연산자의 종류

 1) 산술 연산자 (Arithmetic operator)

산술 연산자 종류 설명 예시 예시 결과
+ 더하기 2+7 9
- 빼기 2-7 -5
* 곱하기 2*7 14
/ 나누기 7/2 3.5
** 거듭제곱 2^10 1024
^ 거듭제곱 2**10 1024
%/% 17%/%4 4
%% 나머지 17%%4 1

  --> 평소 계산할 때와 마찬가지로 순서가 있고, 평소와 동일하게 생각하면 되는 것 같다.

       (1)  () 괄호 먼저 계산 --> 거듭제곱 --> 곱하기, 나누기 --> 더하기, 빼기

       (2) 만일 곱하기, 나누기가 같이 나오거나 더하기 빼기가 같이 나오는 경우라면 왼쪽에서 오른쪽 순서로!

 2) 할당 연산자 (Allocation operator)

할당 연산자 종류 설명 예시 의미
= 오른쪽을 왼쪽 이름에 저장 x=3 x에 3을 할당
-> 왼쪽을 오른쪽 이름에 저장 3->y y에 3을 할당
<- 오른쪽을 왼쪽 이름에 저장 z<-3 z에 3을 할당

 3) 비교 연산자 (Relational operator)

비교 연산자 종류 설명 사용 예시 결과
> 크다 5 > 3 TRUE
>= 크거나 같다 5 >= 3 TRUE
< 작다 3 < 5 TRUE
<= 작거나 같다 3 <= 5 TRUE
== 같다 3 == 5 FALSE
!= 다른다 3 != 5 TRUE
! 부정 !(3==5) TRUE

 4) 논리 연산자

연산자 설명
& AND
&& AND
l OR
ll OR

And는 결국 조건들을 둘다 참일 때만 TRUE, Or은 여러 조건 중 하나만 참이여도 TURE가 되는 연산이라고 한다.

&와 &&, I와 II가 약간 차이가 있는 것 같은데, 자세한 설명은 따로 없었다.

b) R의 데이터 유형: 기본 + 특수

 1) 기본 데이터: 

유형 설명 예시
수치형 (Numeric) 숫자로 이루어짐.
정수형(Integer)와 실수형(Double)이 있음.
3, 7
문자형 (Character) " "로 묶여있는 것들 "안녕", "Hello"
논리형 (Logical) 참 또는 거짓의 논리값 TRUE, FALSE
복소수형 (Complex) 실수와 허수로 이루어진 복소수(x +yi) 2 + 3i, 3 - 2i

 2) 특수 형태의 데이터:

유형 설명
NULL 존재하지 않는 객체로 지정할 때 이용
NA Not available의 약자: 결측치
NaN Not available Number의 약자: 수학적으로 계산 불가능한 수
Inf 양의 무한대 (Infinite)
-Inf 음의 무한대

 3) 유형을 알아내는 방법

   (1) mode ( ) 함수 이용

처음에 "=" 할당 연산자를 이용해서 각각 x1, x2, x3, x4에 수치형, 문자형, 논리형, 복소수형을 할당했고, mode를 통해서 데이터 유형을 확인하였다.

   (2) is 함수 --> 결과는 TRUE or FALSE로 나온다!

함수명 설명 함수명 설명
is.numeric() 수치형인가요? is.complex() 복소수형인가요?
is.integer() 정수형인가요? is.null() NULL 인가요?
is.double() 실수형인가요? is.na() NA 인가요?
is.character() 문자형인가요? is.finite() 유한 수치인가요?
is.logical() 논리형인가요? is.infinite() 무한인가요?

제 10강. "데이터의 구분/유형 그리고 우선순위/벡터의 형성"

a) 데이터 유형의 우선 순위: 문자형 > 복소수형 > 수치형 > 논리형

 - 이러한 우선 순위는 벡터와 같은 데이터에서 발생할 수 있으며, 벡터의 유형은 여러개가 합쳐져도 결국 하나의 유형만 가능하다.

x1은 결국 문자형으로!! (우선순위가 문자형으로 가기 때문이다)

 - 데이터 유형을 강제적으로 변경할 수 있으며 "as.xxxx()"함수를 이용한다. 이 때, 우선순위가 낮은 형태에서 높은 형태로의 강제 변환은 가능하지만, 우선순위가 높은 형태에서 낮은 형태로의 변환은 일부만 가능하다고 한다.

    - Example) x1=10으로 x1에 10이라는 수치형 자료를 넣어두고, as.character(x1)을 통해서 "10"이라는 문자형으로 변환 가능하다.

연산자 설명 결과 내용
as.numeric() 수치형으로 변환 변환 or NA
as.integer() 정수형으로 변환 변환 or NA
as.double() 실수형으로 변환 변환 or NA
as.character() 문자형으로 변환 변환 or NA
as.logical() 논리형으로 변환 변환 or NA
as.complex() 복소수형으로 변환 변환 or NA

b) 벡터 생성하기: 벡터(Vector)는 크기와 방향을 가지는 양을 의미한다. <-> 스칼라


제 11강. "데이터의 구분/벡터의 생성 (1)"

두 개 이상의 데이터를 포함한 벡터 생성하는 방법들

 방법 설명 결과
c(x, y, ...) combine, concatenate의 약자로, 네 가지 유형에 모두 적용가능. 규칙 없는 데이터로 이루어진 벡터를 생성할 때 이용 v1=c(1, 2, 3,)
v2=c("가", "나", "다")
v3=c(TRUE, FALSE)
v4=c(v1, v2)
v1은 숫자형, v2는 문자형, v3 논리형으로 이루어진 벡터가 형성된 것이고, v4는 두개를 합쳐서 문자형으로 나오게 된다.
 > v4 
 > "1" "2" "3" "가" "나", "다"
x:y

1씩 증가하거나 1씩 감소하는 숫자로 구성되며, 처음 쓴 수(x)부터 끝에 쓴 수(y)보다 같거나 작은 값이 마지막으로 적용. 수치형에만 적용! v1=1:4
v2=1: -2.3
> v1=1:4
> v1
   1 2 3 4
> v2=1:-2.3
> v2
   1 0 -1 -2
seq(from=x, to=y, by=z) sequence의 약자로 z만큼의 차이를 가진 x부터 y까지의 값으로 구성된다! seq(from=2, to=4, by=0.5)
seq(from=1, to=-2, by=-1)
> 2.0 2.5 3.0 3.5 4.0
> 1 0 -1 -2
sequence(x) 1부터 x까지 1차이를 갖는 정수로 이루어진 수치형 벡터 생성 sequence(5.4) > 1 2 3 4 5 

 


제 12강. "데이터의 구분/벡터의 생성 (2)"

벡터 생성하기: rep() 함수 이용!

"rep=(반복을 원하는 것, times, each)" 형식으로 구성된다. times는 전체를 몇 차례 복사하는지를 의미하고, each의 경우에는 반복을 원하는 각각의 원소마다 몇 차례 복사하는 지를 의미하나. times와 each가 같이 쓰일 경우에는 each를 먼저 수행하도 times를 나중에 수행하게 된다. 

rep() 함수를 이용한 벡터들: times와 each가 함께 있는 경우에는 each를 먼저 수행한 후에 그 전체에 대한 times를 수행한다.

 

 


4개의 강의를 연이어 들어서 약간 피로하긴 했지만, 파이썬 공부했을 때를 생각해보면 아직은 초급단계인거 같아서 마음이 놓인다. 아직 8개의 강의가 남아있는데, 남은 강의 난이도가 어려울까봐 약간 걱정이 된다. 그래도 이번 주 내로 끝낼 수 있도록 노력해야겠다!! 화이팅 >_<