본문 바로가기

728x90
반응형

배우기/복습노트[R과 분석]

(59)
[복습] R(programming language) Group by 연산 함수(tapply, aggregate, ddply) + 하루끝(20231201) SQL에서 group by 연산처럼 수행을 도와주는 형태가 R에는 함수로 존재한다. 우선 group by 연산은 분리(그룹별) - 연산(적용) - 결합 의 매커니즘으로 구성되어 있다. 세 가지 정도 소개하려고 한다. 1. tapply tapply(vector, # 연산대상 index, # 그룹핑 대상 function # 적용함수, .....) # 함수의 추가 인수 위와 같은 문법으로 되어있다. 문법이 심플한 장점이 있으며, 비교적 단순한 문법이긴 하나 벡터로 리턴이 되는 것이 단점이다(data.frame 리턴 불가). oracle에서는 group by 후 max(), count() 이렇게 여러 개 들어올 수 있는데 tapply는 하나의 연산 대상만 전달이 가능하다. Line 2처럼 학년별 키의 평균을 구..
[복습] R(programming language) 적용함수(sapply, lapply, mapply, apply) (2) + 하루끝(20231130) 적용함수란 R에서의 apply 계열함수이다. 데이터의 일부를 fetch하여 함수에 적용하고, 적용 결과를 결합하여 리턴한다. (분리-적용-결합의 메커니즘을 가짐) 1. sapply 하나의 벡터의 원소에 함수를 적용한다(for문 없이 벡터의 원소를 하나씩 fetch하여 함수에 전달, 즉 하나의 벡터의 원소별 적용). 주로 벡터를 리턴한다(때에 따라 list나 matrix로 리턴되기는 함. split 쓰는 경우 등) 문법 sapply(list, # 1차원 객체 function, # 적용 함수 .....) # 함수에 추가 전달할 인수 필요시 예시이다. f1(c(11, 1))에서 에러가 나는 이유는 벡터를 허용하지 않기 때문이다. 벡터와 어울리지 않는 구문(if문)이 함수 안에 있다. 2. lapply sapp..
[실습문제] 2023. 11. 29.(수) (4문제) 실습문제 1. emp.csv 파일을 읽고 각 부서를 확인한 후 10번 부서이면 sal 10% 증가, 20번 부서이면 11% 증가, 30번 부서이면 12%증가하도록 출력하여라. 이 문제의 경우 반복 객체가 하나인 경우(sapply)와 반복 객체가 여러 개인 경우(mapply)로 풀 수 있는데 나는 반복 객체가 하나인 경우로 풀었다. 먼저 반복객체가 하나인 경우 풀이법이며, 학번 입력 시에 증가된 SAL이 출력되도록 코드를 작성하였다. 다음 풀이는 반복객체가 여러 개 있을 때 가능한 풀이이다. 이 때에는 mapply를 사용한다. 실습문제 2. gogak.csv, gift.csv 파일을 읽고 1) 고객번호를 입력하면 고객의 가용포인트를 출력하는 함수를 생성한 후 모든 고객에 대한 포인트를 출력하여라. 그리고 ..
[복습] R(programming language) 적용함수(sapply) + 하루 끝(20231129) 적용함수란 apply계열 함수를 의미하며, 데이터를 적절히 함수와 어울리게 fetch하여 함수에 적용하고 결과 리턴을 도와주는 함수이다. 적용함수의 원리는 분리, 적용, 결합이다(데이터 분리(fetch) → 함수에 적용 → 적용 결과 결합). 이 세 가지 원리에 의해 순서대로 이루어진다. 1차원 객체에 대한 적용: sapply, lapply, mapply(sapply를 압도적으로 많이 사용) 2차원 객체에 대한 적용: apply 그룹별 적용: tapply(그룹핑 할 수 있음) 앞으로 배우게 될 내용은, lapply는 사실상 쓰지 않고, sapply, mapply, apply를 주로 배울 예정이다. 오늘은 sapply에 대하여 공부하였다. 1.sapply sapply(list, function) sappl..
[복습] R(programming language) 사용자 정의 함수 사용자 정의 함수란 사용자가 직접 정의하는 함수로, 여러 인수를 전달할 수 있는데 이 때 인수의 이름과 함께 정의하여야 한다. 인수는 Default 값을 가질 수 있으며 함수인수자리에 선언하면 된다. 이 때 앞의 인수가 기본값을 가지면 뒤의 인수도 기본값을 가져야 한다는 것이 기본 규칙이다. 이 말 뜻은 뒤에 설명하면서 예를 들어보겠다. 문법 함수명
[실습문제] 2023. 11. 28.(화) (3문제) 참고로 이번 필기는 이전 파일을 덮어씌우는 바람에 다 날렸다............ 그냥 내가 다시 풀고 선생님 풀이와 비교해보는 걸로.. 기억 휘발되기 전에 얼른 올려야겠다. 실습문제 1.disease.txt 파일을 읽고 1) 동일 테이블 생성 후(dis1) 각 NA 값을 각 컬럼의 최소값으로 수정하여라. 2) A형간염의 컬럼 이름을 A간염으로 변경하여라(dis1) 3) dis에서 NA를 하나라도 포함한 행을 제외하여라 두 가지 풀이 방법이 있는데, 첫 번째 방법이다. NA가 포함됐는지의 여부를 검색하고, NA 합이 0이면, 즉 NA가 없으면 그 행번호를 벡터 형태로 저장하는 것이다. 두 번째 풀이방법이다. A형간염 컬럼 또는 월별 컬럼 또는 콜레라 컬럼 또는.... 모든 컬럼의 NA 유무를 T/F의 형..
[복습] R(programming language)에서 날짜 추출하기(Sys.Date, Sys.time, lubridate 등) + 복습후기(20231128) R의 기본함수와 날짜 패키지 중 하나인 lubridate를 가지고 여러 날짜 테스트를 수행하였다. 1. 현재 날짜 Sys.Date() 현재 날짜 Sys.time() 현재 날짜와 시간 2. 날짜 파싱(날짜 타입이 아니어서 날짜로 바꾸어주는 것) (보통 문자 → 날짜로 변경) as.Date와 strptime, as.POSIXct가 있는데 여기서 strptime은 포맷 생략이 불가하나 as.Date와 as.POSIXct는 기본순서(년월일)로 해석할 경우 포맷 생략이 가능하다. 3. 날짜 포맷 변경 strftime('2023/12/25','%A') 4. 날짜 연산 일반적으로 Line 6처럼 100일 후를 계산할 수 있다. Line 8처럼 날짜 차이를 구하면 타입이 difftime이라는 데이터 타입이 출력되는데 ..
[복습] R(programming language) 이전값 가져오기(zoo::na.locf) v1이 다음과 같이 정의되었을 때 (v1
[복습] R(programming language) 반복 제어문(next, break, quit) 반복 제어문이랑 반복문 내에서 사용할 수 있는 제어문으로, 어떠한 조건을 만나면 그 부분만 skip하게하거나(중간에 특정 케이스만 반복하고싶지 않은 경우), 조건이 무한히 진행되다가 어떤 조건을 만나면 반복을 끝나게 하는 것들이다. 반복 제어문을 통하여 반복문의 중간 제어 시점을 정의할 수 있다. 1. next: next를 만나면 반복문 내부에 있는 명령어의 실행을 skip 한다. 예를 들어 위와 같은 R 코드가 있다고 가정했을 때 cmd1은 10번 수행되나 next 다음에 오는 cmd2, cmd3은 next가 포함된 if문과 같은 depth이므로 실행을 skip 한다. 즉 여기서도 같은 depth인 cmd4에만 영향을 미친다. 2. break: 예외 처리를 위하여 주로 사용되는 문장으로, break를 ..
[복습] R(programming language)에서 SQL 작성하기(sqldf 패키지) R 내부에서 SQL을 사용하여 데이터 처리를 도와주는 패키지/함수명이 sqldf 이다. SQLite 문법을 사용하기 때문에 Oracle의 함수가 작동되지 않는다(decode 등). 그러나 Oracle join문법을 지원하며 ANSI 표준도 당연히 지원된다. https://metime.tistory.com/120 [복습] R(programming language) R의 join + 복습후기(20231127) 우선 join이란 참조 테이블에 참조 조건을 걸어 값을 가져오는 행위이다. join 메커니즘은 아래와 같다. step 1) 원본 table에서 참조 조건을 걸 대상(상수) 선택 step 2) 참조 table에서 참조 대상과의 조 metime.tistory.com 이 게시물에서 한번 다룬 적이 있으나 오..

728x90
반응형