728x90

프로그래밍 /R 16

[R] 스크립트 파일 관리 & 프로젝트 생성 및 관리

스크립트 파일 관리 : 코드가 너무 길면 어떤 게 어디 있는지 찾기 어렵다. 수천 줄의 코드가 담긴 스크립트 파일을 어떻게 관리할지. - 캡슐화(Encapsulation) : 특정 기능을 수행하는 코드를 가져다가 꽁꽁 싸는 것. 유지, 보수, 관리가 잘됨. 1) R studio 기능 활용 : Script 파일 목차(구역 나누기 & 목차)를 만들 수 있음. (주석 끝에 ####) 코드 접고 펼 수 있음. 2) 사용자 정의 함수 활용 : 특정 기능을 하는 코드 뭉치를 사용자 정의 함수로 만든다. 별도의 스크립트 파일에 저장하여 필요할 때 불러온다(source 함수). or 패키지로 만들어버림. - 스크립트 파일 grouping 1) 용도에 따른 구분 : 데이터 입출력, 전처리, 시각화 및 레포팅 등 2) 성..

[R] 데이터 재가공

데이터 재가공 1. cbind와 rbind 동일한(열의 수와 이름 모두 일치) 열들 또는 동일한 수의 행을 가진 두 데이터셋을 가졌을 경우 cbind -> column bind; 열 기준으로 합침(vertical), 옆에다 갖다 붙인다고 생각하면 됨 rbind -> row bind; 행 기준으로 합침(horizontal), 아래다 갖다 붙인다고 생각하면 됨 2. 조인(join) 데이터가 항상 cbind를 사용해 결합할 수 있을 정도로 잘 정렬된 형태로 존재하지는 X. 조인을 위한 가장 일반적인 함수 세 가지는 merge, plyr 패키지의 join, data.table에서의 병합 기능 1) merge merge(x, y, by.x, by.y) 이때, x, y = 병합하고자 하는 두 가지 data.fram..

[R] 반복문 없이 반복하기

반복문 없이 반복하기 1. apply류 : apply, lapply, sapply, ... 1) apply apply는 matrix에 대해서만 사용될 수 있다. 즉 모든 원소가 character, numeric, logical 중 어느 것이든지 같은 형이어야 한다. data.frame 같은 다른 객체에 사용하고 싶다면 먼저 객체를 matrix 형태로 변환해야함. data.frame 객체더라도 모든 원소가 같은 속성일 경우에는 상관없다. apply(X, MARGIN, FUN) when X: 다루고자 하는 객체 MARGIN: 함수를 어느 기준으로 적용할지 지정하는 것 (MARGIN이 1이면, row 방향. 2이면 column 방향.) FUN: 적용하고자 하는 함수 2) lapply와 sapply - lapp..

[R] 데이터 읽어오기(read) & 데이터 기록하기(write)

데이터 읽어오기는 이전에도 글 작성을 했지만, 구분자가 명확하지 않은 경우 readLines를 통해 미리 확인을 하는 절차를 추가하여 작성함. - Encoding 1. OS별 인코딩 (운영체제별 인코딩 방식이 다름) Mac OS, Linux: UTF-8 Windows: Euc-kr, cp949 2. 스크립트 파일 문제 해결 (한글이 깨진 파일 어떻게 복구할 것인가?) 1) 기본 인코딩 설정 변경하여 애초에 깨질 일을 없게 하자^^! Reopen with Encoding —> UTF-8로 기본 설정값 변경. ** 파일 인코딩이 뭐길래 깨지나? 한글, 유니코드 처리할 때의 방식이 UTF-8, cp949 등등 다 다름. Ex) 종이접기 펭귄모양으로 접은 종이를 다시 원상복구 시키기 위해서는 접었던 순서의 역순..

[R] 반복문(for loop, while loop)

- 반복문 R에서는 vector, list, data.frame의 원소에 대한 반복적인 연산이 필요할 때마다 loop을 이용하기보다는 벡터화를 사용하는 것이 더 효율적이다. 그러나 때때로 루프 사용이 불가피할 경우, for문과 while 반복문을 사용할 수 있다. 1. for 루프 for 루프는 vector로 제공된 인덱스에 대해 반복하고, 지정된 동작을 수행한다. for( i in 1:10){ action } → 1:10까지 총 10번을 반복하며 action을 수행하는 for 문의 선언이다. 1:10이 들어가는 세번째 인자 자리에는 임의의 형을 가지는 vector가 들어갈 수 있으며, 대부분 numeric이나 character 형을 가진다. R의 내장된 벡터화는 for loop과 동일한 기능을 훨씬 효..

[R] 제어문(if, if~else if~, switch, ifelse)

- 제어문 1. if문 1) if (조건문) { action } : 조건문이 TRUE이면, action을 수행하고 FALSE이면 아무 일도 일어나지 않는다. 2) if (조건문) { action } else { action2 } : 조건문이 TRUE이면, action을 수행하고 FALSE이면 action2를 수행한다. 2. if~ else if~ python의 elif와 같은 맥락이다. 여러 조건을 순차적으로 check하게 된다. 이때 각 조건은 서로 배타적이다. if(조건문1){ action } else if(조건문2){ action2 } else { action3 } : 조건문1이 TRUE이면 action을 수행한다. 조건문1이 FALSE일 경우 조건문2를 test해서 TRUE면 action2를 수행..

R에서 함수 정의하기, 콜하기

- R에서 사용자 정의 함수 사용하기 : 내가 A라는 기능을 수행하는 함수가 필요하지만 R에서는 제공하지 않을 때 직접 함수를 정의해서 사용할 수 있다. 1. 함수 정의하기 R에서 함수를 정의하는 방법은 c나 python과는 다르다(실은 c는 가물가물함 ㅎㅎ;). 기존에 내가 사용해왔던 python에서는 def func_name(arg1, arg2, ...): ... return ...(arg1, ...) 의 형식이었다면, R에서는 def를 사용하지 않는다. 약간 function이라는 객체가 있고 그거 속성 지정을 해준 다음 함수 이름을 담은 변수에 넣어주는 느낌? user.function

R에서 데이터 추출(데이터에서 하위 구조 데이터 추출), 치환 및 삽입하기

- 데이터 추출하기 : 데이터를 확인했다면, 데이터에서 하위구조 데이터를 추출하면서 분석의 기반을 다지는 것. 1. '$' 연산자를 사용한 하위구조 데이터 추출 ex) aws$TA : aws라는 데이터프레임 객체의 TA라는 열 리턴 2. 벡터 연산을 사용한 하위 구조 데이터 추출 1) 행 추출 ① 단일 숫자 ex) aws[2, ] → aws의 2번째 행 추출해서 리턴. 뒤에 column자리는 비워놓음으로써 2번째 행의 모든 열을 다 리턴. ② 문자 ex) aws["2", ] → aws의 2번째 행 추출해서 리턴. 혹은 행 이름을 문자로 지정했을 경우에 사용. ③ 연속 ex) aws[3:10, ] → 3행부터 10행까지 추출해서 리턴 ④ 이산 ex) aws[c(2,135, 3:10), ] → 2행, 135..

R에서 데이터 확인하기

- 데이터 확인하기 데이터를 불러왔으니, 그 데이터가 멀쩡한지 멀쩡하다면 구조는 어떤지 탐색해야 한다. 1. 상/하단 행 확인 head(object, n) → 상단 n개의 행 확인 tail(object, n) → 하단 n개의 행 확인 2. 객체 구조 및 변수별 기술통계 확인 str(객체명): 객체 구조 확인, str은 structure의 줄임말 summary(객체명): 각 변수의 기술통계 확인 → 사분위수, 평균값, 결측치 등을 보여줌. 3. 행, 열에 대해 파악 1) nrow(객체명): 행 개수 확인 2) ncol(객체명): 열 개수 확인 3) dim(객체명): 행/열 개수 확인 4) colnames(객체명): 변수명 확인 cf.) rownames(), names() → 위의 4가지는 반복문, 조건문,..

R로 데이터 가져오기(2)

- 데이터 가져오기(2) 1. 데이터베이스에서 가져오기 (추후에 SQL을 배우면 따로 추가할 예정) 2. R 바이너리 파일 : RData 파일을 이용하는 것. RData 파일은 어떤 종류의 R 객체도 가질 수 있는 바이너리 파일이다. 객체를 하나 이상 저장할 수 있으며, 타 운영체제와의 파일 공유도 문제 없다. 1) R 객체를 RData 파일에 저장하기 save(object1, object2, ..., file = file.path) 2) RData 파일 불러오기 : load(file = file.path) 3. R에 포함된 데이터 : R과 일부 패키지들은 데이터를 기본적으로 포함하고 있어서 그냥 불러오기만 하면 된다. ex) read diamonds data from ggplot2 package. re..

728x90