R:조건문: 두 판 사이의 차이
잔글 (→한줄 형태) |
잔글 (→정식 형태) |
||
(같은 사용자의 중간 판 5개는 보이지 않습니다) | |||
5번째 줄: | 5번째 줄: | ||
다음의 형태로 사용한다. | 다음의 형태로 사용한다. | ||
{| class="wikitable" | |||
|+ | |||
!형태 | |||
! | |||
! | |||
!예시 | |||
|- | |||
|기본형 | |||
|if(조건) {명령} | |||
| | |||
| | |||
|- | |||
| | |||
|if(조건) {명령1} | |||
else {명령2} | |||
|ifelse(조건, 명령1, 명령2) | |||
| | |||
|- | |||
|확장형 | |||
|switch(옵션, 조건1=명령1, 조건2=명령2, 조건3=명령3, ...) | |||
|조건을 type에 포인팅해주면 조건에 맞는 명령을 실행시킨다. | |||
type에 type=c(조건1, 조건2, ...)형태로 명령 동시실행도 가능. | |||
(이건 해봐야 알듯; 내가 해석하기로 가능하다고;;) | |||
|type=조건 | |||
switch(type, | |||
조건1=명령1, | |||
조건2=명령2, | |||
{명령} | ....) | ||
|} | |||
if(조건) {명령} | |||
else {명령} | |||
조건 | 조건 | ||
<br /> | |||
==한줄 형태== | ==한줄 형태== | ||
54번째 줄: | 80번째 줄: | ||
|subset(데이터셋, 추출조건) | |subset(데이터셋, 추출조건) | ||
|- | |||
|grapl() | |||
| | |||
|문자열에서 조건을 만족하는지 여부 반환. | |||
subset과 혼용하여 특정 문자열을 포함한 데이터만 뽑아낼 수 있다. | |||
|grepl("정규표현식", 변수) | |||
subset(데이터셋, grepl("정규표현식", 변수)) | |||
|} | |||
===다양한 조건문=== | |||
{| class="wikitable" | |||
|+ | |||
!의도 | |||
!방법 | |||
|- | |||
|열1에서 값이 x인 행과 열2에서 값이 y인 행을 뽑는다. | |||
|데이터셋[열1 == "x" & 열2 == "y", ] | |||
|- | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
|} | |} | ||
==case== | |||
사례가 많아질 경우, 조건식이 너무 길어진다. 이런 경우엔 left_join() 같은 함수를 이용한다. | |||
데이터셋 = left_join(데이터셋1, 케이스셋2, by="케이스명") 으로 합치면 '케이스명'안에 포함된 데이터에 따라 맨 마지막에 케이스셋2의 데이터가 달라붙는다. | |||
예컨대 반별로 담임선생님을 지정할 경우, 케이스명은 class가 될 것이고, 데이터셋1엔 학생정보를, 데이터셋2엔 선생정보를 담아 합치면 학생정보 맨 끝에 교사 정보가 달라붙는다. | |||
<br /> | |||
==apply함수== | ==apply함수== | ||
78번째 줄: | 134번째 줄: | ||
|계산기준이 1이면 행, 2면 열별로 계산한다. | |계산기준이 1이면 행, 2면 열별로 계산한다. | ||
c(1, 2)를 넣으면 행렬 동시에 계산한다. | |||
|apply(데이터셋[범위], 계산기준, 명령) | |apply(데이터셋[범위], 계산기준, 명령) | ||
102번째 줄: | 159번째 줄: | ||
|데이터셋 = 원본데이터셋[범위] | |데이터셋 = 원본데이터셋[범위] | ||
새로운데이터셋 = lapply(데이터셋, function(x) 명령,) | 새로운데이터셋 = lapply(데이터셋, function(x) 명령,) | ||
새로운데이터셋 = as.data.frame(데이터셋) | 새로운데이터셋 = as.data.frame(데이터셋) |
2020년 8월 25일 (화) 21:35 기준 최신판
R언어 공부를 위한 틀 틀:R
정식 형태[편집 | 원본 편집]
다음의 형태로 사용한다.
형태 | 예시 | ||
---|---|---|---|
기본형 | if(조건) {명령} | ||
if(조건) {명령1}
else {명령2} |
ifelse(조건, 명령1, 명령2) | ||
확장형 | switch(옵션, 조건1=명령1, 조건2=명령2, 조건3=명령3, ...) | 조건을 type에 포인팅해주면 조건에 맞는 명령을 실행시킨다.
type에 type=c(조건1, 조건2, ...)형태로 명령 동시실행도 가능. (이건 해봐야 알듯; 내가 해석하기로 가능하다고;;) |
type=조건
switch(type, 조건1=명령1, 조건2=명령2, ....) |
if(조건) {명령}
else {명령}
조건
한줄 형태[편집 | 원본 편집]
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
ifelse() | if else | 엑셀의 if와 동일하다.
엑셀을 사용할 때처럼 명령 안에 또다시 ifelse를 넣을 수 있다. |
ifelse(조건, 참일때명령, 거짓일때명령) |
subset() | sub set | 특정조건을 만족하는 값들만 모아 새로운 데이터셋 형성.
조건 안에 &이나 | 를 사용하여 다양한 조건을 넣을 수도 있다. |
subset(데이터셋, 추출조건) |
grapl() | 문자열에서 조건을 만족하는지 여부 반환.
subset과 혼용하여 특정 문자열을 포함한 데이터만 뽑아낼 수 있다. |
grepl("정규표현식", 변수)
subset(데이터셋, grepl("정규표현식", 변수)) |
다양한 조건문[편집 | 원본 편집]
의도 | 방법 |
---|---|
열1에서 값이 x인 행과 열2에서 값이 y인 행을 뽑는다. | 데이터셋[열1 == "x" & 열2 == "y", ] |
case[편집 | 원본 편집]
사례가 많아질 경우, 조건식이 너무 길어진다. 이런 경우엔 left_join() 같은 함수를 이용한다.
데이터셋 = left_join(데이터셋1, 케이스셋2, by="케이스명") 으로 합치면 '케이스명'안에 포함된 데이터에 따라 맨 마지막에 케이스셋2의 데이터가 달라붙는다.
예컨대 반별로 담임선생님을 지정할 경우, 케이스명은 class가 될 것이고, 데이터셋1엔 학생정보를, 데이터셋2엔 선생정보를 담아 합치면 학생정보 맨 끝에 교사 정보가 달라붙는다.
apply함수[편집 | 원본 편집]
for문은 기본적으로 하나의 열에 대해서만 작동할 뿐, 여러 row나 column에 계산을 수행하려면 apply함수가 편하다.
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
aplly() | apply | 계산기준이 1이면 행, 2면 열별로 계산한다.
c(1, 2)를 넣으면 행렬 동시에 계산한다. |
apply(데이터셋[범위], 계산기준, 명령) |
tapply | 그룹 간 통계값을 구할 때 사용한다.
데이터셋 열이름의 조합에 따라 그룹별로 연산명령을 수행한다. |
tapply(데이터셋$열이름1, 데이터셋$열이름2, ... , 연산명령) | |
lapply | 여러 변수에 동일함수를 한번에 적용할 때 사용. | 데이터셋 = 원본데이터셋[범위]
새로운데이터셋 = lapply(데이터셋, function(x) 명령,) 새로운데이터셋 = as.data.frame(데이터셋) | |
apply를 항상 사용할 필요 없이, colMeans(데이터셋[범위]) 같은 함수가 있으면 굳이 사용할 필요는 없다.