R로 배우는 데이터 분석 첫 걸음 : 기초 문법부터 데이터 마이닝 실습까지 강좌의 맛보기 강의입니다.
R 프로그램을 먼저 까셨기 때문에 R 프로그램을 실행하는 방법은 파일 메뉴에서 New File을 선택하시고요. 그리고 R 스크립트의 서브 메뉴를 선택하시면 되겠습니다. 그래서 새로운 스크립트를 하나 열어 주시고요. 그 스크립트에 저희가 프로그램을 하도록 하겠습니다. 가장 왼쪽에 있는 창, 왼쪽 상단에 있는 창이 스크립트 창이고요. 그래서 아래 문법에 맞게 명령을 입력하시고요. 실행하는 방법은 컨트롤 엔터 단축키를 알려드리면 스크립트 자체를 실행하는 방법은 컨트롤 엔터고요. 주석 처리 하는 방법이 있는데요. 주석 처리가 이제 저희 샵으로 앞에 붙이는 방법도 있구요. 샵 입력 후에 작성하는 방법도 있구요. 또 한 가지 방법은 단축키를 이용한다면 컨트롤 하고 쉬프트키 하고 C 버튼을 누르시면 토글키거든요. 한 번 누르면 주석 처리가 됐다가 한 번 누르면 주석이 해제가 되는 블록 단위로 여러 줄을 저희가 주석 처리할 때 가장 좋은 방법 중 하나죠. 그래서 그때 쓰시면 될 것 같습니다. 또 스크립트를 저장하는 메뉴는 파일의 저장 메뉴도 있구요. 단축키로는 Ctrl+S라고 해서 세이브죠. 스크립트를 저장하고요. 스크립트가 저장되기 전에 저희가 뭐 잘못 처리를 했다 되돌릴 때 Ctrl+Z 명령을 단축키로 쓰시면 되겠습니다. 가장 저희가 많이 써야 되는 것은 Ctrl+Enter 명령이고요. 화면을 클리어 시켜주는 콘솔 창을 클리어 시켜주는 컨트롤 L 명령도 같이 한번 써보시면 좋을 것 같습니다. 그리고 R은 다시 시작하겠지만 R은 대소문자를 구분하는 그런 언어거든요. 그래서 케이스 센시티브 하기 때문에 대소문자를 구분해 쓴다 라는 것까지 알고 계시면 좋을 것 같습니다. R 프로그램을 본격적으로 들어가기 전에 R 프로그램의 역사와 주요 특징을 살펴보는 것도 좋을 것 같아서 역사와 프로그램의 주요 특징을 살펴보도록 하겠습니다. R은 원래 미국의 Bell 연구소에 있었던 S 언어가 있었어요. Bell 연구소에서 개발한 S 언어를 기반해서 만들었고요. S 언어가 R 전에 있었던 언어죠. S 언어를 기반해서 뉴질랜드의 오클랜드 대학에 있었던 로스 이하카와 로버트 젠틀맨이라는 사람에 의해서 개발됐어요. 두 사람의 이름이 R로 다 시작하잖아요. 그래서 지금의 R 언어가 됐다 이런 설도 있습니다. 그래서 S 언어를 기반으로 해서 R 언어를 만들었고요. R 프로그램의 주요 특징은 오픈소스죠. 프로그램을 설치해 보셔서 알겠지만 무료로 다운받을 수 있었죠. 오픈소스로 풀려 있는 게 가장 큰 특징 중 하나고요. 그리고 두 번째는 R은 통계용 언어예요. 다시 말하면 S 자체도 마찬가지였지만 기존의 S 언어도 통계를 위한 언어이다 라고 할 정도로 통계 기반의 여러 가지들을 할 수가 있는 굉장히 좋은 언어이거든요. 통계를 기반으로 한 데이터 분석 기능을 많이 제공해주고 있어요. 그리고 강력한 그래프 기능도 있죠. 저희가 이제 ggplot이라는 패키지를 한 번이라도 들어보셨는지 모르겠는데 아래서 이제 그런 ggplot이라는 굉장히 좋은 패키지를 지원해주고 있거든요. 그래서 그런 걸 통해서 2D나 3D 그래픽이나 또는 지도, GIS, 동적 그래프 등을 지원할 수가 있습니다. 그래서 강력한 그래프 기능으로 인해서 데이터 분석을 시각적으로 저희가 보여줄 수 있는 그런 기능이 좀 있죠. 그리고 외부 데이터를 불러오기가 되게 쉬워요. 그래서 데이터 핸들링이 좀 쉽다는 얘기는 뭐냐면 R 바깥에 있는 엑셀 파일이나 CSV 파일 내지는 SQL 파일들이 있죠. 또 통계 패키지에 해당되는 SAS나 SPSS에서 했던 언어들도 R로 그냥 불러와서 다시 또 작업을 할 수가 있어요. 그래서 다양한 데이터를 읽고 수정하고 합치는 기능이 너무 편리하게 외부 파일을 컨트롤할 수 있는 핸들링할 수 있는 굉장히 많은 함수들이 제공되고 있습니다. 그런 면이 또 장점이기도 하고요. 무엇보다도 R 프로그램은 메모리에서, 다시 말하면 램이죠. 램에서 작동되기 때문에 데이터 처리 속도가 굉장히 빠릅니다. 그런 것도 큰 장점이라고 볼 수가 있습니다. R 프로그램의 주요 특징을 좀 살펴봤어요. R의 기초 문법을 저희가 해보죠. 어떤 언어든 어떤 프로그램의 언어든 기초 문법에서 가장 먼저 나와야 되는 얘기가 변수예요. variable이라고 얘기하는 이 변수고요. 변수는 그 값이 말 그대로 변하는 수를 담는 하나의 기억 장소라고 생각하시면 좋겠습니다. 기억 장소가 좀 어려우시면 이런 뭐라고 생각하시냐면 이런 저희가 박스라고 생각하셔도 좋고요. 네모난 상자라고 생각하셔도 좋습니다. 메모리에다가 방이라고 생각해도 좋고요. 예를 들면 a라는 변수를 잡고 a에 10을 할당해 줄 거예요 라고 이렇게 말을 해주는 거예요. 그러면 변수 a에 10이 들어가는 형국이 되는 거고요. 메모리에 저희가 말하는 주기억장치 a라는 주소 값에다가 10이 잡힌 형태가 되는 거죠. 그래서 우리가 이거를 방 내지는 메모리를 잡을 때 변수를 이 값을 방이라 부르든지 아니면 상자라고 하든지 이렇게 얘기를 합니다. A에 10을 넣어주세요 라고 하는 부분이고요. A에다가 10을 넣어주는 상황으로 하는 거고 그렇게 되면 메모리에 A란 이름으로 10이 저장되는 겁니다. 마찬가지로 B에다 20을 넣는다 그러면 메모리에 B라는 이름으로 20의 값이 들어가는 형태를 저희가 받는 거죠. 이렇게 해서 이 변수 A, B는 사실은 10이 들어가도 되고 20이 들어가도 되고 30이 들어가도 되죠. 또 다른 값이 또 들어갈 수도 있을 거예요. 이렇게 변할 수 있는 수를 변수라고 얘기를 하고요. 변수는 우리 데이터 분석의 대상이 되는 거죠. 예를 들어 보시면 소득 같은 경우에는 다양하게 들어올 수가 있고요. 성별도 마찬가지죠. 그리고 학점도 마찬가지고요. 변수하고 대응되는 개념이 상수인데요. 상수는 항상 똑같은 값을 갖고 있어서 저희가 분석할 대상은 아니죠. 대신에 변수는 변하는 값들을 좀 갖고 있기 때문에 이것들은 데이터 분석의 대상이 될 수 있다라는 얘기를 하고 있는 거고요. 변수 이름을 저희가 이제 만들어 붙일 거예요. AB 이렇게 간단하게 만들어도 되지만 실제적 업무적으로는 AB를 이렇게 만드시면 안 되고요. 업무 용어에 관련된 업무를 하고 싶은 단위 업무에 관한 관련된 용어들 특히 영어들 영어 이름으로 저희가 변수 이름을 쓰는 거 권장하니까요. 한글 이름은 인코딩이 깨져서 때로는 변수 이름이 좀 깨질 수가 있거든요. 그래서 영문 이름을 쓰셔야 되는데 이거를 여러분 이제 명명, 다시 말해 작명 하실 거예요. 여러분 스스로가 변수 이름을 만들 텐데 그럴 때 이제 원칙들이 좀 있어요. 어려운 원칙은 아니고요. 여기 변수 이름에 들어올 수 있는 것들은 알파벳 쓸 수 있고요. 숫자 쓸 수 있고요. 언더스코어, 마침표도 쓸 수 있고요. 근데 하이픈은 사용할 수가 없어요. 이거 알고 계셔야 되고 또 가장 중요한 건 이 두 번째거든요. 이거를 조심하세요. 첫 글자는 반드시 알파벳이나 점으로 시작하셔야 돼요. 그리고 만약 점으로 시작하면 숫자가 올 수는 없는 그런 원칙이 좀 있어요. 그래서 첫 글자를 알파벳으로 시작한다는 것만 문자로만 시작한다는 것만 알고 계시면 좋을 것 같습니다. 다시 말하면 첫 글자는 숫자로 시작 못해요. 그래서 반드시 알파벳으로 돼서 두 가지 예제를 볼까요. 올바른 변수명 보시면 A는 괜찮다는 얘기예요. B도 그렇게 써도 되고 A2 숫자 써도 괜찮아요. 근데 숫자가 여기처럼 앞에 있으면 안 돼요. 맨 앞에 있으면 숫자로 오는 것은 안 받아줘요. R만 그런 건 아니고요. 모든 언어가 다 그래요. 모든 언어가 그렇습니다. 그래서 마찬가지로 점 다음에 숫자가 또 올 수는 없어요. 그래서 어쨌든 숫자로 시작하면 안 된다는 거죠. 그 다음에 하이픈도 안 된다고 말씀드렸죠. 이것만 좀 조심하시면 돼요. 그래서 첫 글자만 알파벳, 다시 말하면 문자가 들어와야 된다라는 것만 알고 계시면 될 것 같고요. 또 하나 여러분이 아까 말씀드렸지만 변수 이름을 정할 때 A 하고요 한 칸 띄고 B 이렇게 만드시면 안 돼요 공백이 들어가면 안 됩니다 반드시 붙여서 쓰셔야 돼요 내지는 언더스코어를 쓰거나 점을 찍거나 그래도 상관없는데 비어 있으면 안 돼요 스페이스로 그거는 꼭 알고 계세요 변수명을 정할 때 중간에 뭐가 들어올 순 없다 스페이스 바 같은 거 띄어서 할 순 없다 라고 알고 계시면 좋을 것 같습니다 R에서는 변수 값을 할당할 때 equal을 잘 안 써요. equal을 써도 무방은 하지만 equal을 잘 안 씁니다. 그래서 equal 다시 말하면 = 이란 표시 있죠. 이걸 잘 안 써요. 이 연산자를 쓰지 않고 앞에 있는 연산자 이걸 많이 씁니다. 이게 뭐냐면 화살표 앞으로 왼쪽으로 가는 화살표랑 마이너스를 같이 쓰셔야 되요. 그래서 이렇게 붙여 쓰셔야 되거든요. 떨어지면 안 되고요. 그래서 왼쪽으로 가는 화살표 하고 이런 식으로 마이너스 같이 해주는 게 이제 할당해 준다 라는 할당 연산자인데요 왜 equal을 안 쓰냐면 여기 있는 =을 안 쓰냐면 여기가 우선순위가 더 높아요 두 개를 물론 =을 써도 되는데 같이 쓰는 경우가 문제가 좀 있어요 그래서 제가 실습으로 조금 왜 안 되는지 말씀을 드릴 텐데 일단 R에서는 뭐를 즐겨 쓰냐면 여기 있는 표시를 많이 써요 그래서 왼쪽으로 가는 화살표 하고 그 다음에 꺽쇠랑 그 다음에 마이너스랑 이렇게 쓰는 거 이렇게 A에 10을 줄 때 이런 식으로 쓴다는 거 이걸 보시면 키보드를 두 번 누르게 생겼죠 이건 누르고 마이너스 눌러야 되니까 그래서 R에서 뭘 주냐면 Alt키하고 마이너스를 누르면 이게 자동으로 생깁니다 그래서 Alt키랑 마이너스를 함께 누르시면 이 표현 우리가 말하는 변수 값을 할당할 수 있는 연산자가 좀 생기거든요 그래서 이거를 이런 식으로 한번 써보시면 좀 편리하게 쓸 수가 있으십니다 변수는 메모리에 방을 잡아서 어떤 특정한 값을 넣어 주는 거다 라고 이제 변수는 변하는 수를 잡아주는 그 메모리 장소를 잡아주는 걸 변수 variable 한다면 이 변수에 저희가 값을 넣었잖아요 값을 넣을 때 여기 이게 변수라고 생각할게요 그릇 상자라고 생각하시고 메모리 한 공간이라고 생각하시면 될 것 같고요 A란 변수에 저희가 값을 1을 넣을 거예요 그러면 이렇게 1이 들어가잖아요 이 들어가는 값을 저희가 크게 보면 숫자가 들어갈 수도 있고요 또 하나가 뭐가 들어갈 수 있어요? 숫자가 아닌 가장 대표적인 형태가 문자가 들어갈 수도 있고요 또 컴퓨터가 쓰는 논리형 자료 또 들어갈 수가 있거든요 그래서 지금부터 뭘 배울 거냐면 이 저희가 변수라는 방에 넣을 수 있는 값들을 좀 생각해 볼 거예요 그래서 값의 유형인데요 이걸 다른 말로 저희가 데이터 타입 또는 자료형 자료 타입 이렇게 얘기를 합니다 그래서 그 데이터 타입들이 생각해보시면 저희가 일상생활에 쓰고 있는 게 크게 보면 숫자를 쓰죠 숫자 숫자 숫자도 두 가지를 쓰죠 소점 있는 수 없는 수 이렇게 숫자를 쓰고요 숫자가 아닌 가장 대표적인 형태가 뭐죠 문자죠 문자 문자가 되는 거고요 사실은 문자 말고도 날짜도 많이 쓰죠 그래서 이런 날짜형 자료도 있어요 컴퓨터도 표현해야 되니까요 그래서 날짜형 자료도 있고요 또 뭐가 있냐면 컴퓨터는 참 아니면 거짓만 가져야 되니까 논리형 자료도 있습니다 크게 보면 요렇게 자료 타입이 좀 나눠서 써야 되어서 숫자 문자 첫 번째는 수치형 변수 만든다는 얘기는 뭐냐면 이 변수에 값을 넣어줄 때 숫자를 넣어주겠다는 얘기죠. 숫자는 이렇게 정수 소점이 없는 정수도 있지만 소점이 있는 실수를 넣을 수도 있겠죠. 그래서 각각의 변수에 들어가는 값들이 정수냐 실수냐 또는 문자냐 논리형이냐 날짜냐 이렇게 해서 이런 것들을 저희가 데이터 타입이라고 얘기를 하고 이런 거 들어가는 값에 의해서 결국 변수의 데이터 타입이 결정이 되는 거죠. 들어가는 값에 의해서 변수의 타입이 결정이 되고 그리고 저희는 데이터 타입 다른 말로 자료형이라고 부른다 라고 말씀을 드리는 거예요 그러면 R이 가질 수 있는 변수의 데이터 타입은 뭐가 있냐 데이터의 유형 데이터 유형을 뭐로 알아볼 수 있냐면 크게 보시면 아까 말씀드렸던 숫자 중에 정수죠 정수 아니면 실수에요 정수는 소점이 없는 거 소점이 있는 건 실수라고 말합니다 그리고 가장 많이 쓰는 형태가 바로 문자죠 논리형 참 아니면 거짓을 가지고 있는 거고요 날짜 데이터도 있어요 이렇게 해서 다양한 데이터 타입이 준비되어 있는데 처음에 저희가 보실 때는 숫자 두 개를 가리는 게 중요한 거니까요 정수 실수 두 개인데요 일단 정수는 소점이 없는 수를 말해요 그걸 저희는 영어로 integer라고 얘기를 하고요 실수는 R에서는 numeric이라고 얘기를 해요 소점이 있는 수를 말하는 거예요 그런데 실수하고 정수를 좀 보실 때 조금 다르죠 1, 100 이렇게 넣을 줄 알았더니 정수를 넣을 때 뭐라고 넣어야 되냐면 R에서는 뒤에다가 모든 숫자는 사실은 뭐로 받냐면 R에서는 다 numeric으로 받아요 디폴트 값이 numeric이라는 얘기죠 다시요 R에서는 모든 숫자를 정수 실수 가리지 않고 그냥 numeric으로 받아요 100도 정수이긴 하지만 실수이기도 하죠 왜냐하면.0이 생략되어 있는 거니까요 그래서 정수이자 실수이기도 하잖아요 그래서 R 입장에서는 R에서는 어떻게 받느냐 다른 언어는 좀 다른데 R은 어떻게 하냐면 어떤 숫자가 들어오든 그냥 기본은 numeric으로 받아요 그러니까 실수형 데이터 타입으로 받는 거죠 그런데 우리가 꼭 정수를 써야 될 때도 있어요 그럴 경우엔 뒤에다 지정해 주실 때 뒤에다 L, Long이라고 해서 L을 뒤에다 붙여 주셔야 돼요 1L, 23L라고 숫자 뒤에다가 L을 붙이시면 그제서야 정수 타입으로 따로 떼서 받아주는 것이 조금 주의해야 될 사항이긴 해요. 여기 보시면 그냥 제가 1을 넣었죠. 1을 넣어도 얘는 실수로 그냥 받아요. 이건 정수인데 라고 얘기해도 R은 정수, 실수 가리지 않고 numeric으로 받더라. 이런 걸 좀 알고 계시면 좋을 것 같고 그러면 정수로 굳이 넣어주려면 우리가 어떻게 해주냐 입력할 때 숫자 다음에 L을 넣어주면 대문자 L을 넣어줘요 소대문자를 가린다 그랬어요 대문자 L을 넣어주면 정수로 받더라 라고 생각하시면 좋겠습니다 문자는 캐릭터라고 얘기를 하고요 이 캐릭터 데이터 타입은 반드시 싱글, 더블 가리지는 않아요 싱글 따옴표나 더블 따옴표로 이렇게 묶어주셔야 돼요 묶어주시면 되겠습니다 싱글이든 더블이든 이렇게 묶어주면 숫자도 이렇게 따옴표로 묶어버리면 뭐가 된다? 문자가 된다 라고 생각하는 거죠 R 입장에서는 따옴표가 일단 들어오면 싱글이든 더블이든 가리지 않고 아 문자 들어왔구나 생각하지 이 속에 있는 건 생각도 안 해요 여기 숫자인지 문자인지 가리지도 않고요 이 따옴표로 보는 순간 그죠 문자가 들어왔구나 라고 생각해서 데이터 타입을 캐릭터로 잡아줍니다 그리고 논리형 데이터 타입은 로지컬이라고 얘기해요 로지컬은 TRUE 아니면 FALSE인데 조심해서 쓰셔야 되는 게 소대문자를 얘가 가린다 그랬죠? 대소문자를 가리기 때문에 TRUE를 쓰실 때 모두 다 대문자, FALSE도 모두 다 대문자고요 만약 생략하고 싶으면 T, F 쓰셔도 되는데 대문자로 TRUE, FALSE를 얘기한 거니까 한 자씩 써도 괜찮아요 그런데 대소문자를 섞어서 예를 들어 True를 쓸 때 첫 번째만 대문자 나머지 소문자 쓰시면 에러 나요? 이거는 받지 않습니다. 알고 계셔야 돼서 말씀을 드리는 거고요. 날짜 데이터 타입은 Date라 그래요. 날짜 데이터 타입 같은 경우에는 년, 월, 일이 있어야 돼요. 연도가 있어야 되고요. 월이 있어야 되고 일 이렇게 구성된 게 바로 우리가 말하는 날짜 데이터 타입이죠. 이렇게 들어와야만 날짜 데이터 타입으로 받아줍니다. 그리고 복소수형은 저희가 잘 안 쓰니까 안 보셔도 되는데 이제 한 가지 알고 계셔야 되는 것은 R에서는 여기 저희가 팩터형이라 그래서 범주형 데이터 타입을 따로 잡거든요 굉장히 좀 다르죠 저희가 사실은 3과목 데이터 분석을 하면서 통계적으로 보는 그 자료의 척도를 보셨어요 그 자료의 척도 중에 범주형 데이터가 있었죠 범주형 데이터 단지 남자 여자 살았냐 죽었냐 예를 들면 혈액형 A형이냐 O형이냐 B형이냐 이렇게 저희가 가리는 것들 있었죠. 그래서 구분만 해주는 게 팩터형 자료였고요. 그 자료를 다른 언어하고 다르게 따로 구분하고 있어요. 통계형 언어가 정말 맞는 것 같습니다. 그래서 팩터 타입을 따로 주고 있구요. 이게 범주형 데이터 타입이구요. 그래서 범주형 데이터 타입은 이렇게 가리는 것 두 가지 종류를 1인지 2인지, A인지 B인지 이런 식의 가리는 말 그대로 구분하는 용도로 쓰는 게 팩터형입니다. 팩터형 자료를 따로, 범주형 데이터 타입을 따로 R은 갖고 있다라는 것도 알고 계시면 전체적으로 변수 데이터 타입은 이해하신 거예요. 변수는 변하는 수죠 그래서 메모리에다가 특정한 주소값을 잡고 특정한 값을 넣어 주는 걸 변수라고 한다면 그 들어가는 값에 의해서 변수의 데이터 타입이 결정이 되거든요 R은 그러면 그러면 들어가는 값이 무엇이냐 숫자면 대부분 뭐 뉴머릭으로 받더라 문자로 들어가면 캐릭터로 받더라 참인지 거짓인지 논리용으로 주게 되면 로지칼이라는 데이터 타입으로 받더라 그리고 날짜 같은 경우는 데이트가 있고 특별하게 R에서는 범주형 데이터 타입 구분해주는 분류만 해주는 팩터형 데이터 타입이 있더라 라는 것까지 알고 계시면 좋을 것 같습니다 기본적으로 아래에서 제공하고 있는 변수의 데이터 타입 말고도 저희가 알고 있어야 되는 데이터 타입이 한 세 가지 정도 있어요 그 중에 가장 중요한 부분이 뭐냐면 NA값이죠 NA 값은 데이터 분석에서 저희가 해봤듯이 NA는 뭐냐면 Not Available의 약자고요. Missing Value예요. 결측치죠. 사실은 데이터 분석하시면서 가장 전처리 과정에서 반드시 해야 되는 게 이 결측치를 지우거나 없애거나 아니면 대체를 하거나 둘 중 하나를 하셔야 되는 거죠. 그래서 R에서는 결측치를 대문자 NA 로 표시합니다 이것도 쉬운 문제가 나온 적이 있어요 그래서 NA를 대문자 소문자 말고요 왜냐하면 R은 대소문자를 가린다 그랬으니까 그래서 대문자 NA가 바로 우리가 말하는 결측치 아무것도 뭐 값이 들어가 있지 않은 값이죠 그래서 요 값들을 데이터 분석을 반드시 전처리를 하고 나서 그리고 데이터 분석을 들어가야 되기 때문에 전처리 과정에서 반드시 해야 되는 거다 라고 말씀을 드렸어요 그거 말고도 저희가 이제 두 가지가 더 있는데요 NULL이라고 해서 NULL이라고 합니다 이거는 존재하지 않은 객체를 지정할 때 다시 말하면 초기화가 안 된 데이터 값을 저희가 NULL이라고 얘기를 하고요 NaN은 뭐냐 NaN은 Not a Number의 약자이고, 계산이 안 되는 것입니다. 예를 들어, sqrt는 루트를 씌우는 것인데, 루트 마이너스 3을 말하는 것입니다. 마이너스 3은 음수를 제곱근 할 수는 없습니다. 이 자체가 NaN인 것입니다. 안 되는 수식들, Not a Number 안 되는 숫자들 이런 것들을 NaN 이라고 얘기를 합니다 우리가 관심있게 봐야 되는 데이터 타입은 ADsP고 데이터 분석 시간이기 때문에 결측치에 관한 것들을 유념해서 보시고요 결측치 missing value를 R에서는 대문자 NA로 표시하더라 not available 약자더라 이걸 찾아서 저희가 어떻게 한다 없애거나 대체를 하거나 이렇게 해야 된다 라고 말씀을 드렸어요 저희가 변수도 만들고 각각의 변수가 가질 수 있는 데이터 타입의 종류도 좀 봤습니다 그렇다면 그렇게 만들어 놓은 그 데이터 타입이 제대로 만들어졌는지 확인하는 판별하는 함수들이 좀 있어요 판별하는 함수 중에 제가 색깔을 해 놓은 이 두 가지는 각각 클래스나 Structure의 약자 str을 쓰는 거거든요 그래서 각각 x의 클래스를 보여줘 하면 데이터 타입을 보여줄 거고요 그 다음에 x의 Structure를 보여줘 그러면 객체의 내부 구조를 보여주는 명령이에요 그래서 이렇게 해서 내부 구조를 각각 보는 방법이 있고요 객체들을 쳐다보는 방법이 있고 그리고 is 시리즈들이 있어요 is 시리즈 is 점 뭐 is 점 뭐 다 is 시리즈죠 그래서 is.factor라고 하면 들어온 x의 변수가 팩터형인가라고 물어보는 거예요. 팩터형 데이터 타입이니? 라고 물어봤어요. 물어봤기 때문에 is 시리즈는 항상 둘 중 하나가 답이에요. 만약에 이 x가 팩터형 데이터 타입이에요. 그럼 맞아요라고 해서 참값 true를 리턴하고요. 만약에 x가 팩터형이 아니었어요. 그럼 뭐가 될까요? false가 되는 거예요. is 시리즈 대답은 논리형이라 참 아닌 거짓만 가지는 거죠. 밑에 있는 is.numeric은 뭘까요? x라는 이 변수가 numeric 하니? 다시 말하면 뭐지? 수치형 데이터니? 라고 물어보는 거죠. 만약 수치형 데이터면 true를, 안 그럼 false를 대답해 주는 거고요. 알고 계셔야 되는 건 numeric은 숫자는 정수, 실수 가리지 않고 그냥 다 numeric을 받는다고 R에서는 그랬어요. 알고 계셔야 되고요. 정수, 실수, 그리고 is.character x가 문자이니? 역시 참 아닌 거짓 자료 구조 매트릭스 어레이 데이터 프레임 기초 문법을 하고 자료 구조를 할 건데 그때도 is 시리즈를 물어봐요 너 매트릭스니? 너 어레이니? 너 데이터 프레임이니? 라고 물어보는 거죠 만약에 각각의 자료형이 맞으면 true 아니면 false is 시리즈는 확인 작업하는 거예요 is.null이라는 것은 아까 null의 여부죠 null이니? 라고 물어보는 거고요 중요한 거 우리가 결측치를 아까 뭐라 그랬죠? 기억하시나요? 저희가 결측치를 뭐라 그랬어요? 결측치를 저희가 NA 대문자 NA 였잖아요? 근데 결측치니 NA 여부를 확인하는 것이고요 굉장히 많이 물어보는 거죠 왜냐하면 결측치를 제거하려면 일단 결측치를 확인 작업부터 해야 되거든요 탐색하고 검색해 내야 되기 때문에 그럴 때 일일이 우리 눈으로 보는 것은 말이 안 되는 게 빅데이터를 다루는 일인데 하나하나 저희가 몇 천 건 몇 십만 건 있는데 결측치를 저희 눈으로 찾을 순 없어요 그럼 어떻게 하느냐 is.NA 이것도 시험 문제 잘 나왔죠 is.NA라고 해서 너 결측치 맞아? 라고 물어봤죠 그래서 만약에 결측치면 TRUE, 결측치가 아니면 FALSE를 대답하기 때문에 NA가 TRUE 값으로 나오는 걸 찾아서 그 값을 저희가 변경하거나 대체를 다른 특별한 대표 값으로 예를 들면 평균이나 중앙값이나 이런 걸로 대체하거나 아니면 아예 지워버리거나 이렇게 하셔야 되는 부분이 있죠. 그래서 NA하고도 데이터 분석은 연관이 있으니까요. 반드시 기억하셔야 돼요. 그래서 missing value는 NA를 하고 이걸 찾아내는 함수가 있는데 그게 바로 is.NA였다. 라고 생각해 주시면 될 것 같습니다 자 이번에는 데이터 타입이 저희가 정해줬어요 숫자를 넣거나 문자를 넣거나 변수에다 값을 넣은 순간 이미 변수들은 데이터 타입이 결정이 돼 버리는 거죠 그래서 값을 넣을 때 R은 데이터 타입이 결정이 되는데 그 데이터 타입을 결정된 거로 바꿀 수는 없을까 이런 거죠 다시 말하면 문자가 들어왔는데 이 문자를 나중에 연산하려고 보니까 문자끼리는 연산이 안 되거든요 사칙 연산이 그러면 이거를 숫자로 바꾸면 사칙 연산이 가능할 것 같아요 그러면 문자를 숫자로 바꿔주세요 라고 하는 명령이 필요하죠 그게 바로 이제 타입 컨버전이구요 타입을 강제적으로 변경하는 함수가 있어요 그게 이제 as 시리즈에요 모두 다 as로 시작하죠 is는 확인하는 시리즈구요 as는 뭐하는 거죠 변경해줘 이런 얘기라고 생각하시면 되겠습니다 그래서 as.numeric하고요 속에다가 저희가 원하는 뭐 x 이런걸 넣으시면 이 데이터 타입이 원래 뭐였는지 모르겠지만 그거를 뭐로 바꿔주세요 수치형 자료로 바꿔주세요 라고 하는 거예요 그래서 얘가 수치형 자료를 받고 나서 수치형 자료가 변환이 되거나 아니면 변경할 수 없으면 변경 못해 라고 NA 값이 나오는 거죠 할 수 없어 라고 하는 건데 as 시리즈는 뭐하는 시리즈라고요? 데이터 타입을 강제적으로 변경하는 거다 라는 거죠 as.integer는 뭐라고 그럴까요? 속에 들어오는 x 값들 이 값들을 어떻게 이 변수의 변수를 어떻게 바꿔줘? 데이터 타입을 정수로 바꿔줘 라고 한 거고요 as.integer에 as.double은 실수용이 또 하나 있어요 그래서 더블로 바꿔줘 이런거구요 문자로 바꿔주는 as.character 라고 해서 문자로 강제 형변환 시켜줘 as.logical은 논리형으로 바꿔줘 complex는 복소수형으로 바꿔줘 factor는 as.factor에요 그래서 as 시리즈들은 뭐하는거다 데이터 타입을 원래 그 변수에다 저희 값을 넣을 때 데이터 타입이 결정됐는데 그걸 바꾸어서 뭔가 연산이 좀 필요하면 그때그때 거기에 맞는 데이터 타입으로 강제 형변환이 가능하더라 라고 얘기하는 거고요 그게 바로 다 as 시리즈였다 라고 생각하시면 되겠습니다
