[R강의] 175. 데이터프레임에서 특정 값이 포함된 행 제거하기
아래와 같은 데이터프레임이 있다고 합시다. id=c('A','B','C','D','E') height=c(156,176,167,189,196) weight=c(65,77,84,67,75) df=data.frame(id,height,weight) > df id height weight 1 A 156 65 2 B 176 77 3 C 167 84 4 D 189 67 5 E 196 75 id가 C인 행을 제거하고 싶다고 합시다. id가 C인 행을 제거하는 방법은 아래와 같습니다. df=df[ !(df['id']=='C'),] !(df['id']=='C')는 id가 C가 아닌 경우를 TRUE, id가 C인 경우를 FALSE로 반환하는 벡터입니다. 이 벡터를 행 인덱스 자리에 입력하면 TRUE인 경우인 C가 아닌 ..
2023. 8. 29.
[R강의] 173. 데이터프레임 인덱싱에서 df[3, ] 와 df['3', ] 의 차이
아래 두 인덱싱을 봅시다. df[3, ] df['3', ] 세번째 행을 인덱싱한다는 의미로 두 코드가 같아 보이지만 전혀 다른 코드입니다. df[3, ] 는 세번째 행을 인덱싱한다는 의미이고, df['3', ] 는 이름이 3인 행을 인덱싱한다는 의미입니다. 일반적으로는 세번쨰 행의 이름이 3이기 때문에 결과가 같지만, 행 이름이 달라지는 경우에는 위 두 코드를 구분해주어야 합니다. 아래와 같은 데이터프레임이 있다고 합시다. id=c('A','B','C','D','E') height=c(156,176,167,189,196) weight=c(65,77,84,67,75) df=data.frame(id,height,weight) 행 이름을 아래와 같이 바꾸겠습니다. rownames(df)=c(3,2,1,4,5)..
2023. 8. 29.
[R강의] 172. 결측치를 평균값으로 대체하기 (ifelse)
벡터나 데이터프레임에 있는 결측치를 평균값으로 대체하는 방법을 알아봅시다. ifelse 문이 사용되므로 ifelse문을 먼저 배워보겠습니다. 1. ifelse 문 ifelse 문은 아래와 같이 사용합니다. ifelse(테스트,참일경우반환,거짓일경우반환) 예를 들면 아래와 같습니다. > ifelse(1==2,1,0) [1] 0 1==2는 거짓이므로 0을 반환합니다. 테스트 자리에 벡터를 넣으면 각 원소별로 테스트가 수행되어 값이 반환됩니다. > v=c(1,2,3,4,5) > ifelse(v==1,1,0) [1] 1 0 0 0 0 v의 각 원소를 1과 비교하여 같으면 1, 다르면 0이 출력됩니다. 2. 벡터의 결측치를 평균값으로 대체 아래와 같은 벡터가 있다고 합시다. v1=c(1,2,NA,4,NA) 벡터의..
2023. 8. 29.
[R강의] 170. 산점도 점에 좌표와 점이름 출력하는 방법 (bquote)
먼저 산점도를 하나 그려봅시다. x=c(1,2,4,4,1) y=c(1,3,6,2,1) plot(x,y,xlim=c(0,5),ylim=c(0,6)) 각 점의 좌표를 먼저 화면에 출력해봅시다. x=c(1,2,4,4,1) y=c(1,3,6,2,1) plot(x,y,xlim=c(0,5),ylim=c(0,6)) for (i in 1:length(x)){ text(x[i],y[i],labels=paste0('(',x[i],',',y[i],')'),pos=1,cex=0.8) } 각 점의 이름을 순서 대로 P1부터 이름을 붙이겠습니다. $P_1(1,1)$ 과 같은 형태로 출력해봅시다. bquote 에서 ~은 한칸을 띄우고 연결하는 것이고, *은 공백 없이 연결한다는 뜻입니다. 변수를 입력할 때는 .(변수)형태로 입력하..
2023. 8. 29.
[R강의] 169. 그래프에 for문을 이용하여 아래첨자를 변수로 입력하기 (bquote)
아래와 같은 그래프가 있다고 합시다. x=c(1,2,4,4) y=c(1,3,6,2) plot(x,y,xlim=c(0,5),ylim=c(0,6)) 각 점을 $P_{1}$~$P_{4}$라고 두고, 점 아래에 점 이름을 출력하고 싶은 상황입니다. for문을 사용할 것인데요. 이 경우에는 expression 함수가 아닌 bquote 함수를 사용해야 합니다. 아래와 같이 사용합니다. [ ] 는 아래첨자라는 의미이고, .(i)는 i를 변수로 입력받는다는 의미입니다. x=c(1,2,4,4) y=c(1,3,6,2) plot(x,y,xlim=c(0,5),ylim=c(0,6)) for (i in 1:length(x)){ text(x[i],y[i],labels=bquote(P[.(i)]),pos=1,cex=0.8) }
2023. 8. 29.
[R강의] 168. 그래프에 아래첨자,위첨자 넣는 방법 (exprssion)
아래와 같이 이차함수의 그래프를 하나 그려줍니다. x=seq(-4,4,0.01) y=x^2 plot(x,y,type='l') 그래프 제목을 $y=x^2$으로 하고 싶은 상황입니다. 위첨자를 넣어야 합니다. 위첨자는 아래와 같이 넣어줄 수 있습니다. x=seq(-4,4,0.01) y=x^2 plot(x,y,type='l',main=expression(y==x^2)) 아래첨자는 아래와 같이 넣습니다. x=seq(-4,4,0.01) y=x^2 plot(x,y,type='l',main=expression(y==x[2]))
2023. 8. 29.
[R강의] 165. 데이터프레임의 특정 열을 기준으로 결측치를 제거하는 방법
데이터프레임을 하나 만들어봅시다. v1=c(1,2,NA,4,NA) v2=c(10,20,NA,NA,50) df=data.frame(v1,v2) > df v1 v2 1 1 10 2 2 20 3 NA NA 4 4 NA 5 NA 50 결측치를 제거할 건데요. NA가 포함된 모든 행을 제거하는 방법은 간단합니다. na.omit 함수를 적용하면 됩니다. > na.omit(df) v1 v2 1 1 10 2 2 20 오늘 우리가 하고 싶은 것은 이게 아닙니다. 특정 열을 기준으로 결측치를 제거하고 싶습니다. 예를 들어 1열을 기준으로 결측치를 제거하면 3,5행만 제거되는 것입니다. 1열을 기준으로 결측치를 제거하는 방법을 알아봅시다. 먼저 1열의 원소들이 NA인지 여부를 논리값으로 출력해봅시다. > is.na(df$v..
2023. 8. 29.
[R강의] 164. 데이터프레임의 결측치 위치를 알려주는 함수 만들어보기
아래와 같은 데이터프레임이 있다고 합시다. v1=c(NA,2,3,4,NA) v2=c(10,20,NA,NA,50) df=data.frame(v1,v2) > df v1 v2 1 NA 10 2 2 20 3 3 NA 4 4 NA 5 NA 50 긱 원소의 결측치 여부를 확인하는 것은 is.na 로 가능합니다. > is.na(df) v1 v2 [1,] TRUE FALSE [2,] FALSE FALSE [3,] FALSE TRUE [4,] FALSE TRUE [5,] TRUE FALSE 오늘 하고 싶은 것은 결측치의 위치를 출력해주는 함수를 만드는 것입니다. 위 데이터 프레임을 예로 들면 아래와 같이 출력되는 것입니다. 1,1 3,2 4,2 5,1 함수를 만들기 전에 먼저 데이터프레임의 NA 위치를 출력해주는 코드를..
2023. 8. 29.
[R강의] 162. 데이터프레임 특정 열을 기준으로 오름차순, 내림차순 정렬하기
데이터프레임을 오름차순 또는 내림차순으로 정렬할 때는 order 라는 함수가 사용됩니다. 먼저 order 함수를 이해해봅시다. 1. order 함수와 벡터의 오름차순,내림차순 정렬 아래와 같이 벡터를 두개 정의합시다. v1=c(1,2,1,3,2) v2=c(20,10,10,10,30) v1에 order 함수를 적용해봅시다. > order(v1) [1] 1 3 2 5 4 v1을 오름차순 정렬 했을 때, 각 원소가 몇번 째 오게 되는지를 반환합니다. 만약 order(v1)의 결과를 아래와 같이 인덱스로 사용한다면, 오름차순으로 정렬하는 효과를 얻습니다. > v1[order(v1)] [1] 1 1 2 2 3 내림차순 정렬은 아래와 같이 하면 됩니다. > v1[order(v1,decreasing=TRUE)] [1..
2023. 8. 29.
[하루만에 끝내는 R 데이터프레임] 7. 데이터프레임 행 또는 열 제거, 추가, 변경하기
이번 시간에는 데이터프레임의 행 또는 열 제거, 추가, 변경하는 방법을 배워봅시다. 1교시. 강의 소개 2교시. 데이터프레임 정의하고 행이름, 열이름 바꾸기 3교시. 유용한 기본함수 (tail, head, str, dim) 4교시. 벡터의 인덱싱 5교시. 데이터 프레임 원소에 접근하기 (데이터프레임 인덱싱) 6교시. 데이터프레임 행과 열에 접근하기 (데이터프레임 열/행 인덱싱) 7교시. 데이터프레임 행 또는 열 제거, 추가, 변경하기 8교시. 특정 조건으로 데이터프레임 추리기 9교시. 여러 데이터프레임 결합하기 10교시. 엑셀파일을 데이터프레임으로 불러오기 먼저 데이터프레임을 하나 정의하겠습니다. 학생들의 정보를 담고 있는 데이터프레임입니다. df df[-1,] name age grade 2 Emma 1..
2023. 7. 10.
[하루만에 끝내는 R 데이터프레임] 3. 유용한 기본함수 (tail, head, str, dim)
이번시간에는 데이터프레임에 사용하는 유용한 함수를 알아봅시다. 1교시. 강의 소개 2교시. 데이터프레임 정의하고 행이름, 열이름 바꾸기 3교시. 유용한 기본함수 (tail, head, str, dim) 4교시. 벡터의 인덱싱 5교시. 데이터 프레임 원소에 접근하기 (데이터프레임 인덱싱) 6교시. 데이터프레임 열과 행에 접근하기 7교시. 데이터프레임 행 또는 열 제거, 추가, 변경하기 8교시. 특정 조건으로 데이터프레임 추리기 9교시. 여러 데이터프레임 결합하기 10교시. 엑셀파일을 데이터프레임으로 불러오기 네 가지 함수를 배워볼 건데요. tail, haed, str, dim 입니다. 간단한 설명은 아래와 같습니다. tail : 데이터프레임의 앞부분 출력 head : 데이터프레임 뒷부분 출력 str : 데..
2023. 6. 2.