초보자를 위한 R 통계분석 강좌의 맛보기 강의입니다.
이번 시간에는 데이터 유형에 대해서 한번 살펴보도록 하겠습니다 데이터 유형은 앞서 슬라이드에서 보셨듯이 수치형과 정수, 문자, 로지컬, 복소수 이렇게 총 5가지 종류가 있습니다 그래서 그것이 의미하는 것이 무엇인지를 지금부터 코드를 직접 우리가 만들어 보면서 살펴보도록 하겠습니다 우리가 앞서서 예에서 통계를 할 때 수치 자체, 남녀별로 성적을 비교한다고 했을 때 각각 60점, 80점, 90점 이런 것을 직접 비교하는 것이 아니라 변수에 할당한 다음에 우리가 그 변수를 가지고 작업한다고 말씀드렸죠 그런 상황을 가정해서 우리가 성적이라는 변수를 만들고 그 안에 점수를 집어넣도록 할게요 그래서 성적이라는 거는 score라고 만들고 할당 표시를 사용한 다음에 이 안에 반드시 여러분들이 숫자의 집합, 앞으로 이것을 우리가 벡터라고 부를 거예요 벡터라고 해서 어렵게 생각하지 마시고 그냥 동일한 유형의 데이터의 집합이라고 생각하시면 될 것 같아요 그래서 벡터를 만들 때는 반드시 앞에 c를 붙여주시고 괄호를 여시면 됩니다 여기에 이제 combine을 한다는 의미거든요 묶는다 라는 의미에요 이 함수가 그래서 이 score를 여러분들이 임의의 점수를 한번 집어넣어 보도록 하겠습니다 90점, 80점, 70점, 85점 R 통계분석 R 통계분석 R 통계분석 R 통계분석 R 통계분석 이런 식으로 실행이 되면서 score라는 변수에 뭔가 저장이 되어있는데 그 저장된 정보는 이렇게 나옵니다 그리고 자세히 보시면 알겠지만 여기 num이라는 데이터 유형을 분류해주고 이거는 뭐냐면 데이터가 저장되어 있는 주소입니다 나중에 여러분들이 세 번째 있는 학생의 점수를 불러올 때는 여러분들 이걸 다 외울 수는 없겠죠 그러면 대신에 이 주소값을 입력해 주시면 이 80점이라는 점수를 불러올 수 있기 때문에 그런 이유에서 사용되는 개념이라고 보시면 될 것 같습니다 그래서 데이터 유형을 살펴보면 지금 이 score라는 데이터 유형을 한번 살펴보도록 하겠습니다 과연 이 score는 어떤 데이터 유형일까요? 여러분들이 그 유형을 알고 싶으면 이런 함수를 쓰시면 됩니다. typeof 라는 함수를 쓰시면 괄호를 바로 여시고 안에 변수를 집어넣어 주세요. 우리가 위에 만들었던 변수 score 한 다음에 여기에서 저는 Ctrl+Enter를 누르겠습니다. Ctrl+Enter 누르면 마찬가지로 이걸 선택한 효과와 동일하게 나타납니다. 그러면 그 결괏값이 뭐죠? double이라고 나와있습니다. double은 우리가 수치형 변수 중에서 보통 소수점 자리가 있거나 정수라고 우리가 분류해 놓지 않은 그런 연속형 변수를 의미합니다. 그래서 이 score라는 변수에 한번 class, score, Ctrl+Enter 치면 numeric, numeric 이라는 것은 일반적으로 double보다는 상위에 있는 분류 속성입니다 그러니까 우리가 데이터 유형을 5가지 분류했을 때 그 분류 기준 중에 하나가 numeric이고요 그 다음에 numeric 하위에 있는 소수점과 또 정수로 구분되지 않은 숫자를 구분할 때는 double이라고 표시가 됩니다 이런 식으로 score를 만들었고요 그리고 이걸 가지고 제가 이제 물어보고 싶어요 컴퓨터한테 score란 변수가 수치형 변수냐 라고 물어보고 싶어요 그럴 때는 is Is it numeric? 이때 조동사가 앞으로 나오죠 그런 식으로 이해를 하시면 좋을 것 같아요 is.numeric, is.numeric 이 안에 들어가 있는 변수가 numeric 변수냐고 물어보는 거예요 그래서 컴퓨터는 맞으면 TRUE라고 하고 아니면 FALSE, 이 두 가지 양식으로 대답을 합니다 그래서 일단 score가 numeric이구나 라고 했을 때 그 값을 TRUE라고 대답을 해줬어요 이렇게 숫자형 변수가 나왔고요 그 다음 이 score에 한번 구조를 봐볼게요 구조, 변수의 구조를 보시려면 str이라는 함수를 사용하시면 됩니다. 그 다음에 score, 그 다음에 Ctrl+Enter 치시면 이렇게 나와요. score라는 변수는 numeric 변수고 총 5가지 숫자가 할당되어 있습니다. 그 숫자는 이렇게 됩니다. 라고 보여주고 있습니다. 이 값은 곧 여기 우측 상단에 저장되어 있는 값과 정확히 동일하게 됩니다 이런 식으로 여러분들이 변수의 속성에 대해서 한번 살펴볼 수가 있어요 지금 이렇게 우리가 본 거는 다르게 표현하면은 제가 주석을 달아 코멘트를 해 보도록 하겠습니다 수치형 벡터 영어로는 numeric vector라고 부를 수가 있습니다 이런 식으로 수치형 벡터에 대해서 우리가 만들어 보고 한번 그 속성을 다양한 커맨드를 통해서 살펴봤습니다 네 바로 이어서 정수형 벡터를 이번에는 한번 생성을 해보도록 하겠습니다 정수형 벡터를 생성하는 방법은 수치형 벡터와 동일한데 보통 두 가지 방법이 있습니다 그 중에 먼저 정석적인 방법을 먼저 말씀드리자면 제가 int 라는 변수를 만들겠습니다 그 다음에 여기 할당을 할게요 똑같이 벡터인데 위에 있는 숫자랑 동일하게 제가 써보겠습니다 그래서 90, 80, 70, 85, 60 어떻게 보면 소수점이 없기 때문에 지금 이 숫자는 정수형으로 분류해야지 맞습니다 그런데 컴퓨터가 어떻게 분류하는지 볼까요? 지금 우리가 생성한 변수를 numeric 변수로 분류를 했습니다 사실 실무에서는 그 차이가 크지 않지만 여러분이 integer, 나는 굳이 소수점이 필요 없다 라고 선택을 하시면 이렇게 해주면 이제 integer 변수로 만들어 주시면 되는데 여기에서 integer 변수를 만드는 정석적인 방법은 이 숫자 뒤에다가 L이라는 글자를 붙여주세요 대문자로 L이라는 글자를 붙여주시면 Ctrl+Enter 치면 어떻게 되죠? 이 숫자가 다 integer 변수로 인식이 됩니다 그런데 여러분이 데이터를 100개의 케이스가 있는, 지금 우리가 가지고 있는 데이터는 5개밖에 없기 때문에 변환하기 쉬운데 100개의 데이터를 가지고 그렇게 변환하기는 상당히 어렵겠죠 그럴 때는 제가 다른 방법을 또 말씀드릴게요 L을 일단 다 지우고 그냥 이 상태로 우리가 실행을 하게 되면은 numeric 변수가 됩니다 그런데 여기에서 함수 하나를 말씀드리자면은 as.integer라는 함수입니다 이 함수는 numeric 형식의 벡터를 integer 형식으로 바꿔주는 함수입니다 그래서 괄호를 여시면 이 안에 해당되는 변수 이름을 집어넣어 주세요 지금 우리가 집어넣은 게 어떤 변수죠? 이 위에 우리가 생성한 numeric 변수입니다 이 변수를 여기 안에 집어넣습니다 할당을 하신 다음에 제가 new라고 만들겠습니다 새로운 변수라고 해서 new라고 만든 다음에 이거를 한번 실행을 해보겠습니다 그러면은 단순히 이렇게 numeric 변수 형식으로 입력을 했는데 이 함수를 통해서 new라는 변수는 integer 변수로 인식이 되고 있는 것을 확인할 수가 있습니다 마찬가지로 이 변수의 타입을 살펴보면 속성을 이제부터 살펴볼게요 typeof라는 함수 위와 동일하게 사용한 다음에 new를 선택해주시고 class는 과연 컴퓨터가 R에서 어떻게 분류하고 있는지 살펴보자면 run을 선택하면 역시 integer라고 구분이 되어 있는 것을 확인할 수 있습니다 우리가 이 변수가 integer인지를 확인하는 함수는 어떻게 될까요? 위에서 살짝 힌트를 볼 수가 있어요 위에서 어떤 걸 사용했죠? is.numeric이라고 사용했죠 마찬가지로 여기서 정수형인지 확인하는 그런 함수는 is.integer라는 함수입니다 이렇게 한 다음에 괄호 여신 다음에 new를 선택하고 실행을 해보시면은 TRUE라고 나옵니다 왜냐하면 new라는 변수가 integer로 코딩을 했기 때문에 당연히 is.integer의 값은 TRUE와 FALSE를 가질 수밖에 없는데 지금 new라는 변수의 속성이 integer이기 때문에 그 결괏값이 TRUE라고 로지컬 변인으로 그 값이 나왔습니다 그래서 이런 식으로 정수형 벡터까지 살펴보는 시간을 가졌습니다 문자형 벡터를 만들어 보는 시간을 가져보도록 하겠습니다 문자형 벡터는 중요한 게 있습니다 character, 줄여서 chr이라는 변수로 이름을 만들었고요 그 다음에 여기에 할당을 했습니다 그 다음 combine을 열고 여기에서 문자를 입력할 거예요 문자형 벡터는 가장 중요한 것이 따옴표를 일단 열어주셔야 돼요 A 그리고 따옴표 안에 여러분들이 숫자를 입력해도 컴퓨터는 이거를 문자로 인식을 합니다 이 숫자를 좀 더 입력을 해볼게요 문자 C, D 이렇게 입력하면 chr이라는 변수에 이런 문자 데이터가 들어가 있어요 그래서 실행을 해보겠습니다 실행을 해보면 속성이 어떻게 되어있죠? character 변수 이렇게 나와있습니다 그래서 지금 이 문자형 벡터를 한번 제가 마찬가지로 확인해 보겠습니다 typeof 함수를 써가지고 이 안에 chr, Ctrl+Enter를 누르면 character, 이 벡터가 문자형 벡터구나 라고 우리가 알 수가 있죠 그 다음에 이 class를 보면은 마찬가지로 Ctrl+Enter 마찬가지로 이 chr 변수에 상위 속성이 동일하게 캐릭터로 분류되는 것을 확인할 수 있습니다. R을 통해서 과연 이 벡터가 어떤 벡터인지 우리가 살펴보기 위해서 위에서 힌트를 보면 integer 변수는 is.integer라고 물어봤고 numeric 변수는 is.numeric이라고 물어봤으니까 문자형 변수는 어떻게 보면 되겠죠? 문자형 벡터도 마찬가지로 생성을 해봤습니다. 바로 이어서 우리가 로지컬 변인을 한번 생성을 해볼게요. 로지컬 변인이라는 것은 우리가 값이 숫자도 있고 R에서 인식하는 것이 숫자도 있고 숫자 안에는 정수와 소수가 있고 그리고 문자까지 있는 것을 확인했습니다. 또 R이 이제 우리가 자주 사용하는 것은 로지컬 R 통계분석 로지컬 벡터라고 제가 지은 다음에요. 그 다음 변수를 하나 생성하겠습니다. 이름은 로지입니다. 로지라고 생성하고요. 여기에 할당을 하겠습니다. 어떤 걸 할당하냐면은 이제부터 TRUE와 FALSE를 할당할 텐데요. TRUE, FALSE 이 로지컬 변수는 어떤 식으로 구성되어 있냐면요 대문자로 TRUE 그리고 FALSE 이렇게 구성되어 있습니다. 혹은 여러분이 T나 F로 입력하셔도 동일하게 TRUE, FALSE를 인식합니다. 단, 여러분이 소문자 t, f하면 어떻게 되죠? 컴퓨터가 이것을 로지컬 데이터로 인식을 못합니다. 그래서 반드시 여러분께서 대문자로 작업을 해주셔야 돼요. TRUE, FALSE, 풀네임으로 적던지 T, F라고 적던지 상관없습니다만 소문자로 t, f로 적으면 컴퓨터가 지금 보시다시피 이걸 인식을 못합니다. 그냥 단순히 어떤 변수나 함수 정도로 인식하고 있죠. 그래서 이렇게 하시면 안 되고요. 이런 식으로 그래서 다시 FALSE 이렇게 입력을 했습니다. 이렇게 입력을 하고 엔터를 누르면 이렇게 변수가 생성되는 것을 확인할 수가 있습니다. 보시면 이 데이터 유형이 로지컬에서 줄임말로 logi라고 되어 있습니다. 그러면 5개의 벡터 값이 할당되어 있고요. 이런 식으로 TRUE, FALSE, TRUE, FALSE, TRUE가 구성되어 있는 것을 살펴볼 수가 있습니다. 그래서 이 로지컬 변수가 로지컬 타입인지 우리가 확인하는 방법이 여러 가지가 있는데 typeof 이란 함수를 사용할 수가 있습니다. 마찬가지로 run 빨리빨리 할게요. 그 다음 class 라는 것을 통해서도 우리가 Ctrl+Enter 치면 마찬가지로 logical이라는 것을 확인할 수가 있습니다. 또한 우리가 is.logical 이란 함수를 통해서 is 그 다음 logical이란 함수를 통해서 마찬가지로 이것이 로지컬 함수냐 라고 컴퓨터한테 물어볼 수가 있어요. 그러면 is.logical의 결과값이 TRUE라고 나오면 해당 로지라는 변수는 로지컬 벡터구나 라고 이해를 할 수가 있습니다. 이런 식으로 우리가 자주 사용하는 벡터에 대해서 한번 쭉 살펴봤고요. 그 다음 자주 사용하지는 않지만 R에 내장되어 있는 복소수 컴플렉스 벡터가 또 있습니다. 이거는 주로 허수를 다룰 때 사용하는데 복소수 벡터 여러분들이 사용할 일은 사실 거의 없을 거예요. 만약 특수한 어떤 공학적인 계산을 하지 않는 이상은 이걸 사용할 일은 거의 없을 텐데 그래도 한번 알아보겠습니다. 제가 복소수 벡터를 만들게요. 이때 복소수 벡터 이름을 CLX라고 지어보고 제가 할당을 하겠습니다. c()를 열고 안에다가 복소수, 여러분 고등학교 때 배우셨을 수가 있는데 어떻게 구성되어 있죠? 1 플러스 3i 이런 식으로 구성되어 있습니다. 2 플러스 2i 그리고 2 마이너스 17i 이렇게 허수로 구성이 되어 있는 것을 1 플러스 i 이렇게 구성되어 있는 것을 확인할 수가 있습니다. 그래서 Ctrl+Enter를 치면은 잠시만요. 이 약자가 complex라서 cplx라고 나와 있습니다. 이것은 복소수라는 의미입니다. 이것은 앞으로 잘 다루지는 않을 거예요. 위와 마찬가지로 벡터를 확인하기 위해서 여러 가지 함수를 사용할 수 있는데 typeof 이라는 함수를 사용할 수도 있고요. CLX, Ctrl+Enter 그럼 하단에 complex라고 나오죠. 그 다음 동일하게 class(CLX), Ctrl+Enter 치면은 마찬가지로 복소수라고 분류가 됩니다. is.complex라는 함수도 있어요. 그래서 이 함수를 통해서 또 물어보면 컴퓨터는 TRUE라고 답변을 해줍니다. 이런 식으로 우리가 numeric 변수, 정수형 변수, 문자형 변수, 로지컬 벡터, 복소수 벡터를 어떻게 생성하고 그 벡터를 어떻게 확인하는지를 한번 지금까지 살펴보았습니다.
