이번에 다뤄볼 주제는 plot() 함수를 이용하여 Scatter plot을 그려보는 것입니다.

간단히 말해 각 점의 x축 좌표와 y축 좌표를 이용하여 점을 찍는 것이라고 보시면 됩니다.

그림을 그리기 위해 필요한 것이 각 점의 x, y 좌표가 필요합니다.

plot( x축 좌표, y축 좌표)를 이용하면 간단하게 그릴 수 있습니다.

 

그럼 5개의 점 (1, 2), (2, 4), (3, 6), (4, 8), (5, 10)을 그려볼까요?

 

좌표만 넣어주면 자동적으로 x축과 y축 범위를 정하여 그림을 그려줘요.

 

자 그러면 x축과 y축의 범위를 정해주려면 어떻게 할까요?

이때 사용할 인자는 xlim, ylim입니다. 각각 x 축의 범위, y축의 범위를 나타냅니다.

x축의 범위를 0~12, y축의 범위를 0~12로 하고싶으면 다음과 같이 쓰면 됩니다.

x축과 y축의 범위가 0~12로 그려진 것을 볼 수 있습니다. 하지만 양 끝에 약간씩 공간이 있는것을 볼 수 있습니다.

이 공간마저 없이 그리는 방법은 무엇이 있을까요.

x축은 xasx="i", y축은 yasx="i"를 추가하시면 됩니다.

 

자 그다음은 점 형태가 아닌 다른 형태로 바꿔보도록 할께요.

plot 함수는 가장 기본적으로 점 형태로 그려줍니다.

이외에도 다양한 형태가 있습니다.

type을 인자로 사용하며, 다음과 같습니다.

Type 형태
p 점 그래프
l 선 그래프
b 점과 선 그래프(점과 선이 겹치지 않음)
c 선 그래프(점 부분 생략)
o 점과 선 그래프(점과 선이 겹침)
h 수직 막대 그래프
s 계단 그래프
S 계단 그래프(s와 방향 반대)
n 빈 그래프

 

type="l"인 선 그래프인 경우 선의 종류도 다양하게 있습니다.

이때 사용할 인자는 lty이며 다음과 같이 있습니다.

Type

옵션

p

그래프

l

선 그래프

b

점과 선 그래프(점과 선이 겹치지 않음)

c

선 그래프(점 부분 생략)

o

점과 선 그래프(점과 선 겹침)

h

수직 막대 그래프

s

계단 그래프

S

계단 그래프(s와 방향 반대)

n

빈 그래프

 

 

다음으로 선 두께를 조절하기 위해서는 lwd라는 인자를 사용하면 됩니다.

기본적으로 lwd=1로 정해져 있습니다.

더 큰 숫자를 사용하면 선이 두꺼워지게 됩니다.

 

점 크기를 조절하기 위해서는 cex라는 인자를 사용하면 됩니다.

선 두께와 마찬가지로 cex=1이 기본으로 설정되어 있으며, 숫자가 커질 수록 점점 커지게 됩니다.

 

다음 글에서는 색 조절 및 점 모양 변경, 점 선 추가하는 방법을 정리해보도록 할게요.

Posted by 코딩곰돌이
,

이번에 다뤄볼 주제는 경로 설정 및 데이터 불러오기 입니다.

간단한 데이터의 경우 직접 입력을 하여 사용할 수 있지만, 양이 많은 경우 직접 입력하기는 매우 힘들죠.

이러한 경우 *.txt 또는 *.csv 파일로 저장된 파일을 읽어오는 것이 편합니다.

파일을 읽어오기 위해서는 파일들의 위치를 먼저 정해줘야 합니다.

파일을 읽는 경우 외에도 결과를 저장할 때에도 저장될 위치를 정해주는 것이 좋습니다.

그렇다면 먼저 불러올 데이터를 만들어 볼까요.

test_data.txt파일과 test_data.csv파일을 다음과 같이 각각 만들어줍니다.

이제 R에서 경로를 설정해볼까요.

R을 실행시켜 getwd()라는 명령어를 입력해주면 현재 R이 작업하고 있는 위치 경로를 보여줍니다.

다음으로 파일이 있는 위치로 변경을 하려고 하는데요. 파일의 위치는 어디에 있을까요?

윈도우 기준으로 불러오고자 하는 파일을 클릭한 후 마우스 오른쪽 버튼을 눌러 속성을 눌러줍니다.

속성을 눌러보면 파일의 위치가 나타나는데, 이것을 복사하면 됩니다.

 

복사한 후 setwd("복사한 경로")를 하면됩니다.

이때 복사한 경로는 \ 로 구분되어 있는데 이것을 / 또는 \\ 로 변경해야 합니다.

변경하지 않으면 에러가 나타나는 것을 볼 수 있습니다.

그럼 작업경로가 잘 설정되었는지 getwd()를 입력하여 확인해볼까요.

추가로 list.files()라는 함수를 이용하여 이 위치에 어떤 파일들이 있는지도 확인해볼께요.

보이는 것 처럼 경로가 R program폴더로 잘 변경되었고, 이 위치에 test_data.txt와 test_data.csv파일이 있는 것을 확인할 수 있습니다.

 

경로를 설정하는 방법에는 setwd()함수를 쓰는것 외에 직접 클릭하여 설정하는 방법도 있습니다.

파일에서 작업 디렉토리 변경을 클릭한 후 직접 폴더를 선택해주면 setwd()와 동일하게 변경됩니다.

 

이제 파일을 읽어보도록 하겠습니다.

먼저 txt파일을 불러올텐데요. 이때 사용할 함수는 read.table()입니다.

read.table("파일명")을 입력하시면 불러올 수 있습니다.

data1에 txt데이터를 불러와서 할당하도록 하겠습니다.

보시는 것 처럼 test_data.txt를 읽어와서 data1에 할당하였습니다.

그런데 첫 row의 값이 Name과 Score로 들어간 것을 볼 수 있습니다.

Name과 Score를 1 row 값이 아닌 column 이름으로 설정하고 싶다면 header=TURE라는 인자를 추가해주면 됩니다.

이제 문제없이 들어간 것으로 보입니다.

하지만 한가지 주의가 필요한 것이 있습니다.

일반적으로 read.table로 읽었을 경우 문자는 factor로 읽는다는 것입니다.

factor를 이용하시는 경우에는 문제가 없지만 factor를 사용하지 않는 경우 문제가 발생할 수 있습니다.

그렇다면 factor가 아닌 그냥 문자로 읽어오려면 어떻게 해야할까요.

stringsAsFactors=FALSE 라는 인자를 추가해주면 됩니다. (대소문자 주의)

 

다음으로 csv파일을 불러오도록 하겠습니다.

이때 사용할 함수는 read.csv()입니다. read.table과 매우 비슷하며, 추가되는 인자들 역시 동일한 것이 많습니다.

 

가장 기본적으로 파일을 불러오는 방법을 보여드렸는데요.

이 외에도 다양한 형태의 파일을 불러올 수 있으며, 또한 다양한 조건을 설정하여 줄 수 있습니다.

이러한 내용은 차차 다루도록 하겠습니다.

 

Posted by 코딩곰돌이
,

이번에 다뤄볼 내용은 data.frame입니다.

기본적으로 data.frame은 matrix와 매우 유사한 형태에요.

matrix와 마찬가지로 2차원 형태이며, row, column을 가지고 있습니다.

또한 다루는 방법 역시 거의 동일하다고 보시면 되요.

그럼 차이점은 무엇이 있을까요?

matrix와 달리 data.frame은  여러 유형의 데이터를 넣을 수 있습니다. 

column별로 통일을 해주면 되요.

그렇다면 data.frame은 어떻게 만들 수 있을까요?

data.frame( column1, column2, ...)로 만들거나 data.frame(matrix)로 만들 수 있습니다.

이렇게 만들어진 data.frame은 matrix와 동일하게 Index가 [row index, col index]로 부여가 되며,

새로운 row나 col을 추가하기 위해서 rbind, cbind를 동일하게 사용할 수 있습니다.

matrix와 동일한 방법이므로 생략하도록 할게요. 자세한 내용은 matrix편을 참고 부탁드려요.

(matrix편 : https://www.bicbear.com/10)

 

대신 또 차이점이 있는데, 특정 col을 부르기 위해 index를 쓰는것이 아닌 data.frame$colname이라는 방식을 쓸 수 있습니다.

(이 방법은 matrix에서는 되지 않아요)

예시에서 보이듯 먼저 test.m이라는 matrix를 생성하고 colname을 "A", "B", "C"로 지정하였습니다.

이후 matirx$colname인 test.m$C를 입력하였을 때 에러가 발생합니다.

그러나 data.frame인 test.d인 경우 data.frame$colname인 test.m$C를 입력하였을 때 C col에 해당하는 7, 8, 9가 정상적으로 출력되는 것을 확인할 수 있습니다.

 

Posted by 코딩곰돌이
,

이번에 다뤄볼 주제는 Matrix입니다.

앞서 소개를 드린것 처럼 matrix는 2차원 형태의 데이터입니다.

익숙한 엑셀 데이터처럼 2차원 표 형태라고 생각하시면 편할 것 같아요.

Matrix는 2차원 구조다보니 행(row), 열(column)이 존재합니다. 행을 row, 열을 col이라고 부르도록 할께요.

그럼 간단하게 Matrix를 만들어볼까요.

matrix(요소, row 수, col 수)를 이용하여 만들 수 있습니다.

보시는 것 처럼 숫자 1~6이 들어가 있는 matrix를 만들었어요.

첫 번째 col에 먼저 1~3이 채워지고 그다음 col에 4~6이 채워집니다.

만약 row순서대로 숫자를 채우고 싶다면 byrow=TRUE를 추가해주시면 됩니다.

보시는 것 처럼 첫 번째 row에 1,2가 먼저 채워지고 두 번째 row에 3,4가 채워집니다.

Matrix에는 row와 col의 index가 부여가 됩니다. 즉 2개의 index가 부여되며 순서는 [row, col]이에요.

예시에서 보이듯 2번째 row의 2번째 col에 해당하는 값인 5를 출력해 줍니다.

만약 하나의 값이 아닌 여러개를 동시에 출력하고 싶다면 어떻게 하면 될까요?

그 방법은 Index에 숫자 하나를 넣는 것이 아닌 vector를 넣는 것입니다.

예시에서 보이듯 z라는 matrix에서 2, 3번째 row와 1, 3번째 col에 해당하는 2, 3, 10, 11이 matrix형태로 출력됩니다.

그렇다면 일부만 뽑는것이 아니라 row전체를 뽑거나 col전체를 뽑아주려면 해당하는 index를 모두 입력해야 할까요?

꼭 그럴 필요는 없습니다.

만약 row를 뽑는다면 col에 해당하는 index를 빈칸으로 두시면 됩니다.

반대로 col을 뽑는다면 row에 해당하는 index를 빈칸으로 두시면 됩니다.

예시에서 보이듯 index를 [1, ]로 두면 z matrix의 첫 번째 row인 1, 5, 9, 13을 출력해주고, index를 [, 1]로 두면 z matrix의 첫 번째 col인 1, 2, 3, 4를 출력해줍니다.

 

Matirx의 요소 일부를 변경하는 방법은 vector와 마찬가지로 index로 뽑아낸 다음 할당을 하면 됩니다.

가운데 숫자만 100, 200, 300, 400으로 변경된 것을 볼 수 있어요.

Matrix의 경우 vector와 마찬가지로 한가지 형태의 데이터만 넣을 수 있습니다.

만약 문자를 넣게되면 숫자가 문자로 강제 변환됩니다.

(이 내용은 제가 이전에 올려둔 [데이터 구조]편을 참고해주세요! https://www.bicbear.com/7)

자 그렇다면 만들어진 matrix에서 row나 col을 추가하는 방법은 무엇이 있을까요?

바로 rbind(), cbind()라는 함수를 사용하는 거에요.

말 그대로 rbind는 row를 cbind는 col를 붙여주는 함수입니다.

예시에서 보이듯 vector 또는 matrix를 바로 붙일 수 있습니다. 이때 주의하셔야 할 점은 row나 col수를 맞춰줘야 하는건데요.

만약 맞추지 않고 사용한다면 경고 메시지가 뜨면서 숫자를 반복해서 넣거나, 일부가 잘릴 수 있습니다.

row 수가 3개인데 2개만 넣은 경우 숫자 하나가 반복되어 입력되고, 4개를 넣은 경우 남은 하나가 입력되지 않습니다.

 

예외적으로 만약 추가할 row나 col에 같은 숫자만 입력하고 싶다면 꼭 vector형태로 갯수 맞춰서 넣을 필요없이 숫자 하나만 입력해도 가능합니다.

 

이 다음 글에서 다뤄볼 data.frame과 matrix는 매우 많이 사용되는 데이터 구조에요!

익숙해지시면 많이 도움 되실거에요~!

Posted by 코딩곰돌이
,

이번에 다뤄볼 내용은 Factor입니다!

Factor의 경우 vector와 같이 1차원 형태의 구조를 가지고 있습니다.

통계에서 범주형 자료를 다루기 위해 사용되며, level이 존재합니다.

factor(vector)를 사용하여 factor를 생성할 수 있습니다.

예를 들어 9명의 혈액형 데이터를 입력하였다고 생각해봅시다.

위에서 보이듯 자동으로 4개의 level(A, AB, B, O)이 생성됩니다.

그렇다면 level의 순서는 바꿀 수 있을까요?

factor를 생성할 때 levels = c(원하는 level 순서)를 추가해주면 됩니다.

만약 A, B, AB, O 형 외에 없는것을 추가하더라도 level에는 추가될 수 있습니다.

 

그렇다면 factor에서 값을 변경하거나 추가하기 위해서는 어떻게 해야할까요?

만들어진 factor에는 level에 있는 값으로만 수정하거나 추가할 수 있습니다.

먼저 값을 바꿔볼까요?

먼저 만들어둔 f2라는 factor는 level이 A, B, AB, O입니다.

따라서 첫번째 값이 A는 level에 있는 값인 AB로는 변경할 수 있으나 level에 없는 c로 변경하려고 할 때 경고메시지가 나타나며 값은 NA로 바뀌게 됩니다.

다음으로 값을 추가해볼까요?

9개의 데이터가 있는 factor에 10번째 값을 추가해보았습니다.

변경하는 것과 마찬가지로 level에 없는 값을 입력하면 경고메시지가 나타나고 NA로 추가됩니다.

level에 있는 O를 추가하면 정상적으로 추가된 것을 확인할 수 있습니다.

 

만들어진 factor의 levels을 출력하거나 변경은 가능합니다. 하지만 그냥 변경하는 것은 추천하지 않는데요.

그 이유를 살펴보도록 할게요.

levels( )이란 함수를 사용하면 factor의 level를 출력할 수 있고, 값을 할당해주면 변경할 수 있습니다.

그런데 level순서를 변경하고 보면 원래 있던 값도 변경된 것을 볼 수 있습니다.

예를 들어 f2의 두번째 값인 B가 A로 변경된 것을 확인할 수 있어요.

왜 이렇게 된것일까요?

factor의 경우 A, B, AB, O의 값이 나열된 것처럼 보이기는 하지만 실제로는 level의 index가 저장되어 있습니다.

즉 원래 f2의 경우 AB대신 level의 AB index인 3이, B대신 level의 B index인 2가 저장되어 있는셈이죠.

이 상태에서 level을 변경하다보니 index 숫자에 해당하는 level에 값을 가지고 오게 되어 변경되는 것입니다.

 

factor에서 level을 변경하거나 값을 추가하는 경우 factor에서 바로 변경하시는 것 보다는 vector로 변경하여 수정을 하고, 다시 factor를 만드는 것을 추천합니다.(꼭 정답은 아니에요... 그냥 제 경험상 이 방법이 편해서 추천드린거에요.)

factor를 vector로 변경하는 방법은 무엇이 있을까요?

바로 as.numeric(), as.character()라는 함수를 사용하는 방법이에요!

as.numeric()이란 함수는 다른 형태의 데이터를 숫자로 바꾸어주는 함수이구요.

as.character()란 함수는 다른 형태의 데이터를 문자로 바꾸어주는 함수입니다.

 

이 함수를 이용하여 factor를 vector로 바꿀 수 있습니다.

만약 factor에 있는 값들이 문자인 경우 as.character(factor)를 하시면 됩니다.

factor에 있는 값들이 숫자인 경우는 조금 복잡합니다.

먼저 문자로 변경시켜준 후 숫자로 바꿔야 하는데요. 다음과 같이 하시면 됩니다.

as.numeric(as.character(factor))

예시에서 보이듯 as.numeric만 사용하게 되면 level의 index값으로 바뀌게 됩니다.

 

이 방법으로 factor를 vector로 변경 한 후 값을 추가하거나 변경하고 다시 factor를 생성하면 factor 때문에 값이 꼬이는 경우를 방지할 수 있습니다.(이것 때문에 에러 많이 내봤어요 ㅠㅠ)

 

Posted by 코딩곰돌이
,

이번 글에서는 R에서 기본 구조인 vector를 다루는 방법에 대해 알아보도록 할게요!

먼저 vector를 생성하기 위해서는 c(요소1, 요소2, ... )를 사용하면 됩니다.

보시는 것처럼 c()로 완전히 비워서 할당을 하면 NULL로 빈 벡터가 생성됩니다.

그리고 콤마로 분리를 시켜주다가 값을 하나 비우게 되면 에러가 나는 것을 볼 수 있습니다.

그렇다면 숫자를 입력하여 만들 때 1,2,3,4,... 이렇게 모두 입력하는 방법밖에 없을까요?

아닙니다 간단히 c(첫 숫자 : 끝 숫자)를 입력해주면 됩니다! 간단하죠?

그럼 1, 2, 3, 4, 5, 6으로 구성된 vector를 만들면 다음과 같습니다.

R의 경우 index를 1번부터 부여를 합니다.(python은 0부터 시작하기 때문에 python에 익숙하신 분들은 헷갈릴 수 있어요)

index를 이용하여 값을 뽑기 위해서는 vector를 할당한 변수명[index]를 입력하시면 됩니다.

값을 하나만 입력하면 해당하는 index에 있는 값을 보여주고, vector 형식으로 여러개의 index를 입력하면 여러개의 값을 한번에 출력해줍니다.

vector내의 값을 수정하거나 제거하는 방법은 간단히 index를 이용하면 됩니다.

그럼 예를 한번 볼까요?

앞에서 만들어둔 v4에서 4번째 값은 90이었습니다. 이것을 100으로 바꾸기 위해서 변수 자리에 v4[4]를 입력하여 vector v4의 4번재 인자를 설정한 다음 100으로 할당해주면 값이 변경되는 것을 확인할 수 있습니다.

이제 값을 제거해보도록 할게요.

5번째 값인 50을 지우려면 v4[-5]라고 하면 됩니다. 즉 index에 -를 붙여주면 끝이에요!

5번째 있던 50이 사라진 것을 보실 수 있어요.

 

만들어진 vector에 값을 추가하거나, vector를 합치는 방법을 알아보도록 할게요.

vector에 값을 추가하는 방법은 c( ) 를 이용하는 방법인데요. 다음과 같아요.

기존의 vector(v4)의 끝에 값을 추가하는 방법은 그냥 c(v4, 추가하려는 값)을 사용하면 되구요.

중간에 넣기 위해서는 v(v4[추가하려는 자리 앞 index], 추가하려는 값, v4[추가하려는 자리 뒤 index] ) 입니다.

설명만 보면 헷갈리니까 예를 한번 볼게요.

기존에 만들어둔 vector를 합치는 방법도 간단합니다.

c(vector1, vector2)라고 입력해주면 끝이에요.

 

그렇다면 vector를 정렬하는 방법은 무엇이 있는지 있을까요?

sort(), order()라는 함수를 이용할 수 있습니다. 두 함수 모두 정렬을 할 수 있지만 사용방법이 조금 다릅니다.

먼저 sort()를 보도록 할게요.

sort함수는 기본적으로 vector내의 값을 작은값부터 큰값 순서로 정렬하여 출력해줘요.

만약 순서를 뒤집어 큰 값부터 작은값 순서로 정렬하고 싶다면 decreasing=T 또는  decreasing=TRUE라고 추가를 해주시면 됩니다.

다음으로 order()입니다.

order함수는 sort와 달리 index를 출력해줘요.

예를 보면서 설명해드릴께요.

order함수는 값을 정렬한 후 그 값이 가지고 있던 원래 index를 출력해줍니다.

앞에서 만든 v6에서 보면 가장 작은 값은 7번째에 있는 10, 가장 큰 값은 4번째에 있는 100입니다.

따라서 order(v6)를 하면 가장 작은 수 10이 있는 index 7이 제일 앞으로 나오고, 그 다음 숫자인 20이 있는 index 2를.... 이런식으로 출력하여 마지막에는 가장 큰 수인 100이 있는 index인 4를 마지막으로 출력해줍니다.

따라서 sort함수와 같이 정렬된 값을 얻고싶다면 order로 정렬된 index를 이용하여 다음과 같이 입력하면 됩니다.

sort함수와 마찬가지로 큰 값부터 정렬을 하고싶다면 decreasing=T 또는  decreasing=TRUE라고 추가를 해주시면 됩니다.

 

sort함수보다 한 단계 복잡한데요. 그럼 sort만 사용하면 될텐데 왜 order를 사용할까요.

지금은 1차원 구조인 vector를 사용하기 때문에 sort만 사용해도 충분합니다. 그러나 2차원 구조인 matrix나 data.frame을 다룰 때, 한 column기준으로 정렬하기 위해서 사용합니다.

엑셀에서 한 column기준으로 정렬하는 것을 생각하시면 이해가 쉬우실거에요.

 

Posted by 코딩곰돌이
,

이번에 다뤄볼 주제는 데이터의 구조에요~

유형?구조? 처음 접하시는 분은 헷갈릴 수 있어요.

하지만 정확히 어떻게 들어가는지 알아야 나중에 데이터를 다루고, 원하는 그림을 그리는데 도움이 될꺼에요.

R에서 사용하는 데이터의 구조는 1차원 형태의 vector, factor, 2차원 형태의 matrix, data.frame 그리고 다양한 데이터 형태의 집합인 list형태가 있습니다.

 

그럼 하나하나 간단히 살펴보도록 하겠습니다.

Vector의 경우 가장 기본적인 데이터 구조인데요.

그냥 단순히 숫자나 문자가 일렬로 모여있는 집합이라고 생각하면 됩니다.

예를 들어 한 반에 있는 학생들의 수학 성적이 70, 60, 90, 55, 95, 80, ... 이렇게 있다고 할때, 수학 성적을 모은것이 하나의 vector가 될 수 있습니다.

vector를 만들기 위해서는 c( )를 사용하며, 들어가는 각 값들을 콤마( , )로 구분시켜 주면 됩니다.

보시는 것처럼 콤마로 구분시켜주고 값을 넣지 않는다면 에러가 나타납니다.

또한 벡터에는 한가지 유형의 데이터만 들어갈 수 있습니다.

숫자는 숫자만, 문자는 문자만 들어갈 수 있어요.

만약 숫자와 문자를 같이 넣어주면 숫자는 문자로 강제 변환됩니다.

강제 변환되는 기준은 다음과 같습니다.

c(숫자, 문자) -> 문자

c(숫자, 논리) -> 숫자

c(숫자, 복소수) -> 복소수

즉 문자 > 복소수 > 숫자 > 논리 순서입니다.

 

Factor는 vector와 비슷한 모습으로 1차원 구조의 문자나 숫자의 집합입니다.

vector와 다르게 level이라는 것이 존재하는데요.

통계에서 범주형 자료 다루기 위하여 만들어진 데이터 구조이기 때문입니다.

예를 들어 혈액형의 경우 A, B, AB, O형 같이 카테고리로 나누어지는 데이터에서 사용됩니다.

factor(vector) 로 만들 수 있습니다.

factor에는 카테고리가 level로 나타나며, 문자형태로 보이지만, levels의 index로 부여가 되어있습니다.

as.numeric이란 함수를 사용하여 숫자로 변환시켜보면 factor1에 있던 값들이 levels의 index로 변하는 것을 볼 수 있습니다.

 

다음으로 볼 구조는 matrix입니다.

Row와 column으로 이루어진 2차원 형태입니다.

우리에게 익숙한 표 형태의 데이터라고 생각하시면 됩니다~!

matrix(인자, row 수, col 수) 로 만들 수 있습니다.

Vector처럼 한 matrix내에는 한 가지 유형의 데이터만 넣을 수 있습니다.

 

Data.frame은 matrix와 같이 row와 column으로 이루어진 2차원 구조입니다.

matrix와 거의 비슷하지만 차이점은 하나의 data.frame안에 여러 유형의 데이터를 넣을 수 있습니다. (column별로 동일하게 넣을 수 있습니다.)

data.frame(matrix)로 생성할 수 있습니다.

 

마지막으로 list의 경우 list(vector, factor, matrix, data.frame,...) 로 만들 수 있습니다.

데이터 구조 상관없이 넣어줄 수 있습니다.

다음 예시에서 v1은 vector, f1은 factor, m1은 matirx, d.f.set.up은 data.frame입니다.

 

R에서 사용되는 데이터의 구조에 대해 알아보았습니다.

다음 글에서는 각 데이터구조에 따라 다루는 방법을 알아보도록 할께요!

'R program' 카테고리의 다른 글

[데이터 다루기] Factor편  (0) 2019.09.03
[데이터 다루기] Vector편  (0) 2019.09.01
[데이터 유형] 숫자? 문자?  (0) 2019.08.23
[실행] 처음 실행 해보기!  (0) 2019.08.20
[설치] R 프로그램 설치  (0) 2019.08.18
Posted by 코딩곰돌이
,

자 이번에는 R에서 사용되는 데이터의 유형에 대해서 알아보도록 할게요.

1, 2, 3 은 숫자이고 '코딩곰'은 문자라는 것은 딱 봐도 알 수 있습니다.

그렇다면 R에서는 구분을 할까요?

정답은 구분한다입니다.

R에서는 숫자(numeric), 복소수(complex), 문자(character), 논리(logical)로 데이터의 유형을 구분합니다.

mode()라는 함수가 있는데요. 이것을 사용하면 입력한 값이 어떤 유형인지 볼 수 있습니다.

그럼 예를 볼까요.

num이라는 변수에 10이라는 값을 할당해보면 숫자(numeric)로 들어가 있는 것을 확인할 수 있습니다.

R에서는 숫자를 입력하면 자동으로 숫자라고 인식을 합니다.

 

그렇다면 문자를 입력하기 위해서는 어떻게 해야 할까요?

문자를 입력하기 위해서는 따옴표(' ') 또는 큰따옴표(" ")로 묶어서 입력해야 합니다.

만약 따옴표(큰따옴표)를 쓰지 않고 그냥 입력한다면 문자가 아닌 변수 또는 함수로 인식을 합니다.

따라서 할당된 변수나 함수가 있으면 이 값을 보여주고, 없다면 에러가 나게 됩니다.

 

데이터의 유형을 왜 알고 있어야 할까요?

데이터의 유형이 맞지 않으면 R은 제대로 인식을 하지 못해 원하는 대로 출력되지 않습니다.

만약 숫자를 큰따옴표로 묶어서 입력하고 사칙연산을 시켜본다면 다음과 같이 에러가 날 거예요.

숫자가 아닌 문자로 인식을 했기 때문에 1+3=4로 계산하지 못한 것입니다.

 

복소수는 어떻게 입력하면 될까요?

숫자 뒤에 + 숫자*i로 입력하면 됩니다.

 

마지막으로 논리의 경우 True / False를 판단하여 나타냅니다.

논리를 판단하기 위해서는 크다(<), 작다(>), 같거나 크다(<=), 같거나 작다(>=), 같다(==), 같지 않다(!=)를 사용할 수 있습니다.

특이한 것은 논리의 경우 True를 1로, False를 0으로 인식할 수 있기 때문에 숫자처럼 계산이 가능합니다.

실제 데이터 분석을 하면서, 많은 데이터의 True/False를 판단한 후 결과를 모두 더하면 True가 몇 개인지, False가 몇 개인지 간단히 볼 수 있습니다.

 

Posted by 코딩곰돌이
,