티스토리 뷰

반응형




base R content 

  • 본격적인 R 프로그래밍을 시작하기 전에 숙지해놓아야 할 것들만 정리한 페이지 입니다. 이 페이지는 기본적으로 R studio base r cheet sheet 를 기반으로 구성하였습니다.

  • 이번 글에서는 R에서 사용하는 데이터 형식들 (vector, matrix, array, list, data frame) 과 R 기본 프로그래밍 에 대해 살펴보겠습니다.

  • https://www.rstudio.com/resources/cheatsheets/



데이터 구조 


  • 가장 기초가 되는 value 입니다. R 에서 사용하는 value 는 character, numeric, integer, logical, complex 로 총 5가지로 분류할 수 있습니다.

  • value 가 여러개 모여 1차원 데이터 구조를 형성하고 이를 vector 라고 부릅니다. vector 는 모든 종류의 value 를 포함할 수 있지만 하나의 vector 는 한 종류의 value 들만 포함할 수 있습니다.

  • vector 가 여러개 모여 matrix 를 구성합니다. matrix 는 2차원 데이터 구조 입니다. 행과 열로 이루어져 있으며 vector 처럼 하나의 matrix 는 한 종류의 value 들만 포함할 수 있습니다.


  • 2 차원 데이터 구조인 matrix 를 여러개 모아 array 를 만들 수 있습니다. array 는 3차원 이상의 데이터 구조를 만들 수 있으며 vector 나 matrix 처럼 한 종류의 value 들만 포함할 수 있습니다.

  • vector 나 matrix, array 는 한 종류의 value 들만 포함할 수 있었지만 list 는 그렇지 않습니다.

  • list 는 여러 형식의 value 들을 포함할 수 있으며 다 차원 데이터 구조를 구성할 수 있습니다.

  • 또한 각 열의 길이가 다를 수 있다는 점이 특이한 부분입니다.

  • data frame 을 일반적으로 가장 많이 쓰는 table 과 같습니다. 다 차원 데이터 구조를 구축할 수 있으며 list 처럼 여러 형식의 데이터를 포함할 수 있습니다.

  • list 와 다른 점은 list 는 각 열의 길이가 달라도 괜찮지만 data frame 은 각 열의 길이가 같아야 한다는 점 입니다.



데이터 구조 - vector 


  • vector 를 만드는 방법은 여러가지가 있습니다. 

  • 가장 많이 일반적으로 사용되는 것은 combine 함수로 묶는 방법입니다. c( elements ) 로 사용할 수 있습니다.

  • 숫자일 경우는 1:3 에서 처럼 : 를 사용해서 연속된 시퀀스를 만드는 것도 가능하며 직접 seq() 메소드를 사용할 수 도 있습니다.

  • repeat 기능인 rep() 함수를 사용해서 반복적인 vector 를 만드는 것도 가능합니다.


  • vector 전용 함수들이 있습니다. sort(), rev(), table(), unique() 함수 입니다.

  • sort() 는 vector 를 정렬하는 기능을 갖고 있습니다.

  • rev() 는 vector 를 거꾸로 뒤집는 기능입니다.

  • table() 은 요약해주는 기능입니다. input 이 123123 일 경우에 table() 메소드의 output 이 1 2 3 / 2 2 2 로 나오는 것을 확인할 수 있는데, 이는 1 과 2 와 3 이 각각 2개 씩 존재한다는 것을 의미합니다.

  • unique() 는 중복을 제거해주는 함수라고 표현할 수 있습니다. 


  • vector 를 조회하는 방법으로는 크게 2 가지가 있습니다. 위치를 기반으로 하는 조회방법과 값을 기반으로 하는 조회방법이 있습니다.

  • 위치를 기반으로 조회하는 방법은 vector_name[ index ] 입니다. index 가 4 면 4 번째 값을 조회하는 것이고 -4 이면 4 번째 값을 제외하고 조회하는 것 입니다. 2:4 처럼 시퀀스 값의 경우 2,3,4 를 조회하겠다는 의미 이며 -(2:4) 이면 2,3,4 를 제외한 값을 조회하겠다는 의미 입니다. c(1,5) 가 index 일 경우에는 1 과 5 번째를 조회하겠다는 의미 입니다.

  • 값을 기반으로 하는 조회방법은 index 란에 조건을 넣어주어야 합니다. x == 4 를 실행해보면 F, F, F, T, F 를 반환합니다. 따라서 x[ x==4 ] 는 x[c( FALSE, FALSE, FALSE, TRUE, FALSE)] 과 유사합니다. 이 경우 TRUE 값인 위치인 4 만 반환합니다. x[ x<3 ] 또한 마찬가지 입니다. TRUE 값인 1 과 2 만 반환합니다. 

  • 어떤 값이 어떤 시퀀스 안에 포함되어 있는지 확인하고 싶을 때 사용하는 연산자는 %in% 입니다. x %in% c( 2, 3, 4 ) 는 x 가 2, 3, 4 중 하나이면 TRUE 를 반환하는 것입니다. 따라서 TRUE 값을 반환하는 2 와 3, 4 를 출력하는 것을 알 수 있습니다.



데이터 구조 -  matrix 


  • matrix 를 만드는 방법은 matrix() 메소드를 사용하는 것 입니다. 대표적인 parameter 로는 data 와 열의 수와 행의 수 가 있습니다.

  • 주의할 점은 기본적으로 데이터를 열 부터 채운다는 점입니다. 따라서 1 열이 1 , 2 , 3 입니다만 만약 행부터 채우고 싶다면 byrow 파라메터 값을 TRUE 로 변경해주시면 됩니다. matrix(1:9, 3, 3, byrow = TRUE) 처럼 명령하면 1열의 값은 1, 4, 7 로 채워질 것입니다.


  • 처음 matrix 를 만들 때 byrow 파라메터를 이용해서 채워 넣는 방법도 있지만 matrix 로 여러 연산을 진행하다가 transpose 해야할 경우가 있습니다. 이럴 때는 t( matrix_name ) 메소드를 사용할 수 있습니다.

  • 행렬곱은 많이 사용합니다만 차후 머신러닝 관련 코드를 구성할 경우에 정말 많이 사용해야 합니다. 이때 단순히 * 연산자를 사용하면 원하는 결과를 얻지 못합니다. 

  • R 에서 matrix 간 연산에서 사용하는 * 연산자는 요소곱을 의미합니다. 하지만 일반적으로 행렬간 곱을 할 때는 행렬곱을 사용하죠.

  • R 에서 행렬곱을 위해선 %*% 연산자를 사용해야합니다.


  • 다른 프로그래밍 언어를 다룬 적이 있다면 매우 익숙한 조회방법일 겁니다. 기본적으로는 vector 의 조회방식과 같습니다. [ row_index, col_index ] 라고 생각하시면 됩니다.



데이터 구조 - array 

  • array 를 만들기 위해선 array 함수를 사용합니다. array( data, dimensions ) 가 기본구조이며 dimensions 는 벡터값으로 구성해주면 됩니다.

  • array 도 마찬가지로 열부터 값이 채워집니다. 하지만 matrix 와 다르게 byrow 파라메터는 없습니다.

  • 조회방법은 기본적으로 matrix 와 같습니다. [ 행번호, 열번호, 추가 차원 번호 ] 로 구성됩니다. 따라서 만약에 위의 array 에서 19 를 조회하고 싶다면 a[ 1, 1, 3 ] 으로 조회할 수 있습니다. 만약 3차원보다 더 큰 차원이 된다면 추가 차원에 대한 index 가 뒤에 붙는 형식입니다. 직접 실험해보시면 더 빠르게 이해할 수 있으실 겁니다.



데이터 구조 - list 


  • 여러 벡터들을 list() 함수로 묶어주면 새로운 list 를 만들 수 있습니다. 다른 종류의 데이터를 포함할 수 있고 길이가 같지 않아도 되는 것이 list 의 특징입니다.

  • list 의 조회방법은 여러가지가 있습니다. 하지만 matrix 와는 조금 다른 부분이 있으니 자세히 봐볼까요.

  • 열 전체를 조회하는 방법이 총 3가지 정도 있습니다. 

    • 첫번째는 list$colname 입니다. 예제에선 a 열을 조회하기 위해 l$a 라고 지정한 것을 확인할 수 있습니다. $ 는 차후 데이터 프레임에서도 많이 사용하는 방법입니다.

    • 두번쨰는 list['colname'] 입니다. index 란 안에 colname 을 넣어 조회하는 방법입니다. 개인적으로는 첫번째 방법을 더 선호합니다.

    • 세번째는 열의 순서를 통한 조회입니다. l [ [ col_index ] ] 입니다. b 열 전체를 조회하기 위해 l [ [2] ] 처럼 조회할 수 있습니다.

  • 특정 값들을 조회하고 싶을 때는 열과 행을 각각 지정해줘야 합니다. l [ [ con_index ] ] [ row_index ] 처럼 조회할 수 있습니다.


데이터 구조 - data frame 


  • data frame 을 만들 때는 data 들을 data.frame 함수로 엮어주면 됩니다. data 에는 vector 도 가능하고 data.frame 도 가능합니다. 중요한 것은 모든 열의 길이가 모두 같아야 한다는 점 입니다.


  • data frame 은 matrix 처럼 조회할 수도, list 처럼 조회할 수도 있습니다. 개인적으로는 matrix 처럼 조회하면서 열 전체를 선택해야하는 경우에는 list 처럼 $ 를 사용해서 조회합니다.


  • data frame 에서 자주 사용하는 함수들을 살펴보겠습니다.

  • View() 는 data frame 전체를 새로운 창에서 보여주는 함수입니다. View() 의 가장 앞자리가 대문자라는 것을 주의하세요.

  • head() 는 data frame 의 처음 6 줄을 콘솔 창에 출력해주는 함수입니다. 기본적인 구조를 보기 위해 자주 사용하는 함수입니다.

  • nrow(), ncol() 은 각각 열의 수와 행의 수를 출력하는 함수입니다. 이 둘을 동시에 출력하기 위해서는 dim() 함수를 사용합니다. dim() 함수는 행의 수 부터 출력합니다. 마치 값을 조회할 때 처럼요.


  • 여러개의 data frame 을 결합할 때 사용하는 함수입니다. cbind 는 column 을 합치는 함수 입니다. sql 의 join 과 비슷합니다.

  • 마찬가지로 rbind 는 row 를 합치는 함수 입니다. sql 의 union 과 비슷합니다.


기본 프로그래밍 문법 

  • 기본 프로그래밍 문법 부분은 프로그래밍 언어를 접해본 적이 있으신 분을 대상으로 진행했습니다. 반복문이나 조건문의 개념은 어떤 프로그래밍 언어에서든지 관계없이 동일하기 때문에 R 에서는 어떻게 반복문이나 조건문을 작성하는지만 살펴보겠습니다.










부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 부분이나 질문이 있으시면 

댓글로 말씀해주세요.


금방 확인하고 피드백 드리겠습니다.


좋은 하루 되세요. ^^


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함