[R강의] 161. 데이터프레임 행과 열을 제거하는 방법
데이터프레임을 하나 정의합시다. v1=c(1,2,1,3,2) v2=c(20,10,10,10,30) v3=c('a','b','c','d','e') df=data.frame(v1,v2,v3) > df v1 v2 v3 1 1 20 a 2 2 10 b 3 1 10 c 4 3 10 d 5 2 30 e 1. 열 제거하는 방법 첫번째 열을 제거하는 방법은 아래와 같습니다. 제거하고 싶은 열의 번호에 마이너스를 붙이고 인덱싱하면 됩니다. > df[-1] v2 v3 1 20 a 2 10 b 3 10 c 4 10 d 5 30 e 아래와 같이 콤마를 넣어도 됩니다. > df[,-1] v2 v3 1 20 a 2 10 b 3 10 c 4 10 d 5 30 e 첫번째 열과 세번째 열을 제거하는 방법은 아래와 같습니다. > df[..
2023. 4. 26.
[R강의] 160. 데이터프레임 행의 순서를 바꾸는 방법과 원리
데이터 프레임을 하나 정의합시다. v1=c(1,2,3,4,5) v2=c('a','b','c','d','e') df=data.frame(v1,v2) > df v1 v2 1 1 a 2 2 b 3 3 c 4 4 d 5 5 e 순서를 바꿀 때는 데이터프레임의 인덱싱을 사용합니다. 인덱싱의 원리를 이해하면 순서를 바꾸는 원리도 이해할 수 있습니다. 데이터프레임 df 의 첫번째와 두번째 행만 가져와 봅시다. > df[c(1,2),] v1 v2 1 1 a 2 2 b 이번에는 순서를 바꿔서 두번째 행과 첫번째 행을 가져와봅시다. > df[c(2,1),] v1 v2 2 2 b 1 1 a 인덱싱 c(2,1) 의 의미는 두번째 행과 첫번째 행을 순서대로 가져오라는 의미입니다. 이 원리를 이용하면 데이터프레임 행의 순서를 바..
2023. 4. 26.
[R강의] 158. 벡터 원소의 순서를 바꾸는 방법과 원리
아래와 같은 벡터가 있다고 합시다. v=c('A','B','C') 순서를 B,A,C 로 바꾸고 싶다면 아래와 같이 하면 됩니다. > v[c(2,1,3)] [1] "B" "A" "C" 인덱싱을 이용한 것인데요. c(2,1,3) 을 인덱스로 입력하면 두번째, 첫번째,세번째 순서로 원소를 가져와 벡터 형태로 나열하게 됩니다. 아래와 같이 입력하면 어떻게 출력될까요? v[c(2,1,2)] B,A,B 가 출력됩니다. 인덱스를 중복으로 입력해도 된다는 것을 알 수 있습니다.
2023. 4. 26.
[R강의] 155. 데이터프레임의 여러 열을 합쳐서 변수와 값으로 만들기 (melt)
데이터프레임의 여러 열을 합쳐서 변수와 값으로 만드는 방법을 알아봅시다. 말이 좀 어렵죠? 그림으로도 준비했습니다. 왼쪽 데이터는 다섯 학생의 성별과 시험성적입니다. 네 과목의 시험성적인데요. 오른쪽 처럼 과목이라는 열과 점수라는 열로 바꿔보겠습니다. 오른쪽 처럼 바꾸면 데이터를 다루기가 편해집니다. 먼저 패키지를 하나 설치하고 불러옵시다. reshape2 라는 패키지입니다. 이 패키지 안에 있는 melt 함수를 사용할 겁니다. #패키지 설치 install.packages("reshape2") #패키지 불러오기 library(reshape2) 아래와 같이 데이터를 입력합시다. ID=c(1,2,3,4,5) SEX=c('M','M','F','F','F') ENG=c(65,55,45,95,78) MATH=c(..
2023. 4. 15.
[R강의] 152. 벡터의 그룹별로 함수 적용하기 (tapply)
아래와 같은 벡터가 있다고 합시다. v=c(1,2,3,4,5,6,7,8,9) 각 값들은 아래와 같은 그룹에 속한다고 합시다. 그룹은 factor로 정의합니다. f=factor(c('A','A','B','A','A','B','A','A','B')) tapply 함수를 이용하면 그룹별로 함수를 적용할 수 있습니다. 그룹 별로 평균을 구해봅시다. > tapply(v,f,mean) A B 4.5 6.0
2023. 4. 5.
[R강의] 151. 리스트의 각 원소에 함수 적용하기 (sapply, lapply)
리스트의 각 원소에 함수를 적용하는 방법은 두가지가 있습니다. sapply 와 lapply 함수입니다. sapply 함수는 결과를 벡터나 행렬 형태로 출력하고 lapply 함수는 결과를 리스트 형태로 출력합니다. 예제를 통해서 이해해봅시다. 먼저 리스트를 하나 정의합시다. Math=c(94,82,45,55,67) English=c(88,86,56,90,50) Science=c(87,76,65,43,55) li=list(Math,English,Science) > li [[1]] [1] 94 82 45 55 67 [[2]] [1] 88 86 56 90 50 [[3]] [1] 87 76 65 43 55 1. sapply 함수 sapply 함수는 아래와 같은 형식으로 사용합니다. sapply(리스트,함수) 리스..
2023. 4. 4.
[R강의] 150. 데이터프레임의 열 방향으로 함수 적용하기 (apply, sapply, lapply)
데이터프레임의 열 방향으로 함수를 적용하는 방법은 무려 세가지가 있습니다. apply,sapply,lapply 입니다. 이들의 차이점은 결과를 출력하는 방식입니다. apply와 sapply 는 벡터나 행렬 형태로 결과로 출력하고 laaply 는 리스트 형태로 결과를 출력합니다. 복잡해 보이지만 예제를 통해 쉽게 이해할 수 있습니다. 먼저 데이터프레임을 하나 정의해봅시다. Math=c(94,82,45,55,67) English=c(88,86,56,90,50) Science=c(87,76,65,43,55) df=data.frame(Math,English,Science) > df Math English Science 1 94 88 87 2 82 86 76 3 45 56 65 4 55 90 43 5 67 50 ..
2023. 4. 3.
[R강의] 149. 벡터나 데이터프레임을 그룹별로 나눠 리스트에 저장 (split)
split 함수는 벡터나 데이터프레임을 그룹별로 나눠 리스트에 저장해주는 함수입니다. 어떻게 사용되는지 알아봅시다. 1. 벡터를 그룹별로 나눠 리스트에 저장 아래와 같은 벡터가 있다고 합시다. v=c(1,2,3,4,5,6,7,8,9) 각 값들은 아래와 같은 그룹에 속한다고 합시다. 그룹은 factor로 정의합니다. f=factor(c('A','A','B','A','A','B','A','A','B')) split 함수를 사용해봅시다. > split(v,f) $A [1] 1 2 4 5 7 8 $B [1] 3 6 9 2. 데이터프레임을 그룹별로 나눠 리스트에 저장 위에서 정의한 벡터와 요인으로 데이터프레임을 만들어봅시다. df=data.frame(v,f) > df v f 1 1 A 2 2 A 3 3 B 4 4..
2023. 3. 29.
[R강의] 148. with 함수와 그래프 (열이름을 표현식에 사용)
with 함수란? with 함수가 무엇인지 알아보고, with 함수를 그래프와 어떻게 함께 사용되는지도 알아봅시다. with 함수의 기본적인 형태는 아래와 같습니다. with(data,표현식) data에는 데이터프레임이나 리스트가 올 수 있습니다. with 함수는 데이터프레임에 있는 열 이름을 표현식에 바로 사용할 수 있게 해주는 함수입니다. with 함수를 사용하기 위해 아래와 같은 데이터프레임을 하나 정의해봅시다. df=data.frame(A=c(1,2,3),B=c(4,5,6),C=c(7,8,9)) > df A B C 1 1 4 7 2 2 5 8 3 3 6 9 아래와 같이 코드를 입력해봅시다. 어떤 결과가 출력될까요? with(df, A) A가 출력됩니다. > with(df,A) [1] 1 2 3 벡..
2023. 3. 28.
[R강의] 144.정규분포 함수 4종류 의미 (dnorm, pnorm, qnorm, rnorm)
R에서 제공하는 정규분포 함수는 네 종류가 있습니다. 함수 이름과 입력값은 아래와 같습니다. dnorm(x, mean = 0, sd = 1, log = FALSE) pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) rnorm(n, mean = 0, sd = 1) 하나씩 의미를 알아봅시다. dnorm dnorm 의 d는 density 입니다. dnorm 은 확률밀도함수를 의미합니다. x에서의 확률밀도값을 반환합니다. 종 모양의 정규분포함수에서 y값에 해당됩니다. pnorm pnorm 의 p는 probability 입니다. 누적확률을 의미합니..
2023. 3. 20.
[R강의] 140. 데이터 프레임을 쉽게 조작하는 transform 함수
데이터프레임을 하나 정의합시다. num=1:10 score=c(78,62,65,94,71,97,57,83,71,96) md=data.frame(num,score) > md num score 1 1 78 2 2 62 3 3 65 4 4 94 5 5 71 6 6 97 7 7 57 8 8 83 9 9 71 10 10 96 둘째 열에 5를 더해서 셋째 열을 추가하는 상황을 가정합시다. 아래와 같이 인덱싱을 이용하여 추가할 수 있습니다. > md[,'add']=md$score+5 > md num score add 1 1 78 83 2 2 62 67 3 3 65 70 4 4 94 99 5 5 71 76 6 6 97 102 7 7 57 62 8 8 83 88 9 9 71 76 10 10 96 101 이번에는 tran..
2023. 2. 27.