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

Big data_day 05 (빅 데이터 공부 5일차)

Felix89 2020. 6. 2. 22:20

 오늘은 심흥섭 교수님의 강의 중에서 제 13강 데이터의 구분/벡터의 속성, 14강 요인/행렬, 15강 배열/리스트 총 3가지 강의를 들었다. 3개의 강의가 상당히 연속성이 있는 강의로 느껴졌다. 뭔가 Python이 상대적으로 쉬운 언어라는 얘기를 들은 적이 있는데, 맞는 말인 거 같다 ?!


제 13강. "데이터의 구분/벡터의 속성"

a) 벡터(Vector)의 속성

 "데이터의 유형" + "원소(element)의 개수" + "원소(element)의 이름"

 1) 데이터 유형을 확인하는 방법: mode(v), is.numeric(v), is.character(v), is.logical(v), is.complex(v)

 2) 원소의 개수 확인하는 방법: length(v)

 3) 원소의 이름은 새롭게 부여하는 방법: names() --> 추가로 이름 확인할 수도 있음!

벡터의 속성: 데이터의 유형을 확인하고, 원소의 개수를 확인하고, 이름을 붙이고 확인할 수 있다.

b) 벡터의 인덱싱(indexing): 일부 원소를 추출할 때 사용 --> v[]를 이용한다(대괄호).

벡터의 인덱싱(Indexing)

c) 벡터의 연산: 수치형 벡터로 된 두 개 이상의 벡터 간에 사칙연산이 가능!!

  1) Vector의 길이가 동일한 경우라면 각각 자리수에 맞추어서 계산!

  2) Vector의 길이가 동일하지 않는 경우라면 "재사용 규칙(recycling rule)"에 맞추어서 길이가 적은 쪽에 추가적으로 eleemnt를 더 생성해서 숫자를 맞추어서 계산해준다!

    --> 추가적으로 배수 관계가 아니라면 "경고 메세지"를 같이 발생시켜 줌!

사칙연산이 가능하며, 재사용 규칙이 중요한 특징이다!!


제 14강. "요인/행렬"

a) 요인(Factor): 범주형 자료로 인식 가능!!

  - factor(): 요인을 생성

  - levels(f): f를 구성하는 집단의 이름을 확인

  - labels를 이용하여 집단에 이름을 변경해 줄 수 있음

요인(factor)의 형성: factor() 함수, levels, labels를 각각 확인할 수 있다. labels의 경우 순서대로 그룹의 이름을 변경할 수 있다. levels은 일종의 그룹으로 생각하면 된다.

b) 행렬: vector, factor가 1차원의 개념이라면 수학 시간에 배웠던 행렬은 2차원의 개념으로 생각!!

 - 행(row)과 열(column)으로 구성됨. 벡터와 동일하게 하나의 데이터 유형만 가질 수 있음.

 - 행렬을 형성하는 함수들

    (1) rbind(v1, v2, v3 ... ): 행으로 합쳐서 하나의 행렬로 만들며, "벡터의 개수=행의 개수"

    (2) cbind(v1, v2, v3 ...): 열로 합쳐서 하나의 행렬을 만들며, "벡터의 개수=열의 개수"

행렬의 형성: 첫번째는 rbind, 두번째는 cbind로 각각 vector의 개수가 행의 개수, 열의 개수이다.

    (3) matrix(vector, nrow=x, ncol=y): x행 y열인 행렬이며, 값이 열 방향으로 우선 입력

        vs.

        matrix(vector, nrow=x, ncol=y, byrow=TRUE): x행 y열인 행렬이며, 값이 행 방향으로 우선 입력

byrow=TRUE라는 명령어는 행방향으로 숫자를 채워준다!!


제 15강. "배열/리스트"

a) 배열(array): 데이터가 마침내 3차원 이상으로 구성할 수 있음! 그러나 여전히 데이터의 유형은 한나만 가질 수 있음!

   - 생성은 array() 함수를 이용하며, 내부의 dim으로 차원을 결정할 수 있다.

계속해서 dim()에서 괄호안의 개수가 차원을 결정하는 요인이 되며, 동일하게 재사용 규칙이 적용된다.

b) 리스트(list)

벡터, 요인, 행령, 배열, 데이터 프레임(data frame)과 리스트 자체까지도 원소로 포함할 수 있는 큰 개념.

- list()함수를 사용하여 만들 수 있으며, 동일하게 []로 데이터를 추출할 수 있다! (indexing하는 것과 같이)

하나의 벡터, 하나의 행렬로 구성된 list를 형성하고, 추출을 진행해보았다.


확실히 많은 양의 데이터를 처리하는 데에 유용한 프로그램인 느낌이다. 좀 더 열심히 남은 기간 공부를 해야겠다.