[R 강의] 94. 정규분포에 색칠하기
도구 R로 푸는 통계 94. 정규분포에 색칠하기 91강에서 배운 폴리곤 함수를 이용하여 정규분포 색칠을 하는 방법을 알아봅시다. 설명은 주석으로 대체합니다. ##정규분포 함수를 그리기 위한 데이터 생성 set.seed(2) x=seq(-4,4,0.001) y=dnorm(x) ##정규분포 함수 그리기 plot(x,y,type="l",ann=FALSE) title(main="normal distribution",xlab="x",ylab="f(x)", cex.lab=1.3,cex.main=1.5) ##색칠할 범위 설정하기 areaX=seq(1.96,4,0.01) areaY=dnorm(areaX) ##폴리곤 함수에 사용할 수 있도록 데이터 가공하기 xp=c(areaX,rev(areaX)) yp=c(rep(0,l..
2020. 6. 6.
[R 강의] 89. 데이터프레임에서 결측치(NA)의 위치를 알아내기
도구 R로 푸는 통계 89. 데이터프레임에서 결측치(NA)의 위치를 알아내기 결측치가 있는 데이터프레임에서, 결측치 NA의 위치를 "행,열"형태로 출력해봅시다. 예를들어 3행 2열에 결측치가 있다면 "3,2"가 출력되는 것입니다. 설명은 주석으로 대신합니다. #먼저 결측치가 들어있는 벡터를 2개 정의합시다. V1=c(1,2,3,NA,5) V2=c(1,2,NA,NA,3) #벡터 2개를 이용하여 데이터프레임을 만들겠습니다. df=data.frame(V1,V2) #dim 함수를 이용하여 데이터프레임의 행과 열의 수를 알아냅니다. dim(df)[1] 은 행의 수 입니다. dim(df)[2]는 열의 수 입니다. nrow=dim(df)[1] ncol=dim(df)[2] #For문을 이중으로 사용할 것입니다. i가 ..
2020. 5. 22.
[R 강의] 88. 히스토그램 여러 개 겹쳐서 그리는 방법
도구 R로 푸는 통계 88. 히스토그램 여러 개 겹쳐서 그리는 방법 히스토그램 2개를 겹쳐서 그려보겠습니다. 3개 이상에도 동일한 방법이 적용됩니다. 설명은 주석으로 대체합니다. #데이터 생성하기. 정규분포에서 임의추출하여 데이터 생성. M_H=rnorm(500,170,5) F_H=rnorm(500,160,5) #x 축 범위 설정 x_range=seq(130,200,by=2) #히스토그램 만들어서 저장, plot=FALSE로 설정하여 그려지지 않게함 M_H_hist=hist(M_H, breaks=x_range, plot = FALSE) F_H_height_hist=hist(F_H, breaks=x_range, plot = FALSE) #y축 범위 설정을 위해 y축 최댓값을 찾아줌 y_max=max(max..
2020. 5. 19.
[R 강의] 87. 마진(margin)과 테두리 선 넣기
도구 R로 푸는 통계 87. 마진(margin)과 테두리 선 넣기 마진은 '여백'을 의미합니다. R에는 두가지 마진이 있습니다 inner margin과 outer margin입니다. 주석을 통해 설명드리겠습니다. #mar은 inner margin 의 아래,왼쪽,위,오른쪽 간격을 설정합니다. #oma는 outer margin의 아래,왼쪽,위,오른쪽 간격을 설정합니다. #mar default c(5.1, 4.1, 4.1, 2.1) #oma default c(0,0,0,0) par(mar=c(6,6,6,6), oma=c(4,4,4,4)) #아무 그래프나 그렸습니다 plot(1,type="n",xlim=c(0,5),ylim=c(0,5)) #mtest는 margin에 text를 표시합니다. #outer=FALSE..
2020. 5. 18.
[R 강의] 86. 결측치(NA) 확인, 제거, 수정하는 방법
도구 R로 푸는 통계 86. 결측치(NA) 확인, 제거, 수정하는 방법 오늘 사용할 데이터입니다. C1=c(1,2,NA,NA,5) C2=(1,2,3,4,5) C3=(NA,2,3,4,5) md=data.frame(C1,C2,C3) > md C1 C2 C3 1 1 1 NA 2 2 2 2 3 NA 3 3 4 NA 4 4 5 5 5 5 1) 결측치 확인 결측치를 확인할 때는 is.na( ) 함수를 사용합니다. 위 데이터프레임에 적용해봅시다. C1=c(1,2,NA,NA,5) C2=(1,2,3,4,5) C3=(NA,2,3,4,5) md=data.frame(C1,C2,C3) > is.na(md) C1 C2 C3 [1,] FALSE FALSE TRUE [2,] FALSE FALSE FALSE [3,] TRUE FALS..
2020. 5. 15.
[R 강의] 84. 행렬의 곱셈
도구 R로 푸는 통계 84. 행렬의 곱셈 2행2열짜리 행렬을 두개 정의합시다. m1=matrix(c(1,2,3,4),nrow=2) m2=matrix(c(1,2,3,4),nrow=2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 먼저 곱셈 기호를 사용해서 곱해봅시다. > m1*m2 [,1] [,2] [1,] 1 9 [2,] 4 16 행렬곱의 결과가 아닙니다. 같은 위치에 있는 값끼리 곱해준 결과입니다. 행렬곱은 아래와 같은 연산자를 사용합니다. %*% 이 연산자를 이용하여 곱셈을 해봅시다. > m1%*%m2 [,1] [,2] [1,] 7 15 [2,] 10 22 이번에는 크기가 다른 두 행렬을 정의합시다. m1=matrix(c(1,2..
2020. 4. 4.
[R 강의] 83. 행렬 또는 데이터프레임의 행과 열을 바꾸는 방법 t()
도구 R로 푸는 통계 83. 행렬 또는 데이터프레임의 행과 열을 바꾸는 방법 t() t()함수를 이용하면 행렬이나 데이터프레임의 행과 열을 바꿀 수 있습니다. 행과열을 바꾼다는 것을 예를들면 2행1열에 있던 값과 1행2열에 있는 값의 자리를 바꾸는 것입니다. 이렇게 모든 쌍의 자리를 서로 바꿔줍니다. 선형대수학에서는 '전치행렬(transposed matrix)'이라고 합니다. 1. 행렬에 t() 적용하기 행렬을 정의하고 행과 열을 바꿔봅시다. 아래와 같이 2행2열로 된 행렬을 정의했습니다. > M1=matrix(c(1,2,3,4,5,6),nrow=2) > M1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 정의한 행렬에 t() 함수를 적용해봅시다. > t(M1) [,1] [,2] [1..
2020. 4. 2.
[R 강의] 78. match.arg 함수
도구 R로 푸는 통계 78. match.arg 함수 match.arg 함수는 첫번째 문자형 벡터의 인수(argument)가 두번째 벡터의 인수에 있을 때, 그 값을 반환해줍니다. 문자형벡터만 가능합니다. 아래와 같은 기본형을 갖습니다. match.arg(arg, choices, several.ok = FALSE) > match.arg('a',c('a','b','c')) [1] "a" 앞글자가 같아도 반환해줍니다. > match.arg('a',c('apple','banana','chicken')) [1] "apple" > match.arg('ap',c('apple','banana','chicken')) [1] "apple" > match.arg('app',c('apple','banana','chicken'..
2020. 4. 1.
[R 강의] 77. match 함수
도구 R로 푸는 통계 77. match 함수 match 함수는 첫번째 벡터의 인수(argument)가 두번째 벡터의 인수의 몇번째에 있는지를 알려줍니다. 없는 경우는 NA를 반환합니다. > a=c(1,2,3,4,5) > b=c(2,5,7,8,9) > match(a,b) [1] NA 1 NA NA 2 1은 b에 없기 때문에 NA가 반환되고, 2는 b의 첫번째 원소이므로 1이 반환되는 것입니다. 반환되는 NA 값을 바꿀 수도 있습니다 . > match(a,b,nomatch=0) [1] 0 1 0 0 2 문자로는 반환할 수 없습니다. > match(a,b,nomatch="a") [1] NA 1 NA NA 2 경고메시지(들): In match(a, b, nomatch = "a") : 강제형변환에 의해 생성 영상..
2020. 4. 1.
[R 강의] 76. table 함수는 분할표를 만든다
도구 R로 푸는 통계 76. table 함수는 분할표를 만든다 table 함수는 '분할표'를 출력해주는 함수입니다. 예시를 통해 분할표가 무엇인지 이해해봅시다. 5명의 남성과 4명의 여성을 대상으로 종교를 조사했습니다. 남자를 M, 여자를 F라는 약어로 표기하였습니다. 기독교는 Ch, 이슬람은 I, 카톨릭은 Ca, 불교는 B, 무교는 N으로 표기하였습니다. 번호 성별 종교 1 M Ch 2 F I 3 M N 4 M B 5 F N 6 M Ch 7 F Ca 8 M B 9 F N 위 데이터를 벡터에 저장합시다. > gender=c('M','F','M','M','F','M','F','M','F') > religion=c('Ch','I','N','B','N','Ch','Ca','B','N') 결과를 출력하면 아래와..
2020. 4. 1.
[R 강의] 72. 여러 데이터의 산점도를 하나의 그래프에 그리기(points 함수)
도구 R로 푸는 통계 72. 여러 데이터의 산점도를 하나의 그래프에 그리기 (points 함수) 서로 다른 데이터를 하나의 그래프에 그려야하는 경우가 있습니다. 예를들어 A반 학생과 B반 학생의 수학,영어 점수 분포를 한눈에 비교하고 싶은 상황을 가정해봅시다. A반 학생 5명의 수학점수와 영어점수는 아래와 같습니다. A반(수학점수, 영어점수) 1. 93,82 2. 77,63 3. 59, 90 4. 75, 69 5. 100, 98 B반(수학점수, 영어점수) 1. 57,33 2. 98,75 3. 66, 68 4. 30, 26 5. 100, 100 먼저 '비어있는'그래프를 하나 그리겠습니다. plot함수의 데이터 자리에는 전체 구간을 입력해줍니다. 시험점수니까 0점부터 100점 사이 값을 가질 것입니다. 따라..
2020. 3. 31.
[R 강의] 71. 산점도에서 점의 색 서로 다르게 설정하기
도구 R로 푸는 통계 71. 산점도에서 점의 색 서로 다르게 설정하기 먼저 산점도를 하나 그려봅시다. x=c(1,2,3,4,5,6) y=c(1,2,3,4,5,6) plot(x,y) 산점도의 색을 바꿔봅시다. col 옵션을 사용합니다. x=c(1,2,3,4,5,6) y=c(1,2,3,4,5,6) plot(x,y,col='red') 산점도에 색을 바꾸긴 했는데, 점마다 다른 색을 입력하고 싶은 상황입니다. 첫 두점은 빨간색, 나머지 네 점은 파란색으로 입력하려고 합니다. 이때는 col 옵션에 원소가 색으로 이루어진 벡터를 입력해주면 됩니다. x=c(1,2,3,4,5,6) y=c(1,2,3,4,5,6) plot(x,y,col=c('red','red','blue','blue','blue','blue')) 만약 ..
2020. 3. 31.
[R 강의] 70. 파이그래프에 범례(legend) 추가하기
도구 R로 푸는 통계 70. 파이그래프에 범례(legend) 추가하기 68강에서 그렸던 파이그래프를 변형했습니다. 회사 이름을 빼고 퍼센트만 남겼습니다. 회사 이름은 오늘 배울 범례(legend)를 이용해서 나타내겠습니다. data= c(21.6,22.3,16.4,15.7,9.9,14.2) labels=paste(data,'%') mycolor=c(colors()[1],colors()[13],colors()[53],colors()[45],colors()[23],colors()[18]) title=c("Global large-area display market share 2017.1") pie(data,labels,col=mycolor,main=title) 위 그래프에 범례를 추가해봅시다. 회사 이름으로 ..
2020. 3. 30.
[R 강의] 69. 문자열을 연결하는 paste 함수
paste 함수는 우리가 정의한 벡터의 원소에 무언가를 붙이거나 벡터의 원소를 하나로 합쳐주는 기능을 합니다. 설명만 들어서는 감이 안올 수 있으니 간단한 예제부터 시작해봅시다. > a=c(1,2,3,4,5) > paste(a) [1] "1" "2" "3" "4" "5" 아무 조건 없이 paste 함수를 적용하면, 우리가 정의한 벡터가 문자열 벡터로 변경됩니다. as.character 과 동일한 기능을 합니다. 일단 벡터를 문자열로 바꿔야 합치던지 다른 문자를 붙이던지 할 수 있기 때문입니다. 이번에는 모든 원소에 hi 라는 단어를 추가해보겠습니다. > a=c(1,2,3,4,5) > paste(a,"hi") [1] "1 hi" "2 hi" "3 hi" "4 hi" "5 hi" 기능이 이해가 되시나요? 이..
2020. 3. 30.