728x90

전체 글 114

[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..

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

데이터 가져오기 1. CSV 가져오기 정확히 말하자면 첫번째 인자인 파일명은 파일의 전체 경로이다. 1) read.csv("파일명") : 인강에서는 가장 많이 쓰이는 방법이라고 했으나, 책에서는 여러 문제가 많이 발생할 수 있다고 read.table() 쓰라네. 2) read.table("파일명", sep = ",") : 전달받은 file을 읽어와서 data.frame을 리턴한다. file path, sep 이외에 header, stringsAsFactors 등의 인자가 있다. header는 불러들일 데이터의 첫번째 행이 열의 이름을 나타내는지 명시한다. stringsAsFactors는 FALSE로 지정하게 되면 character 열이 factor 열로 자동 변환되는 것을 막을 수 있다. 이 경우 연산 ..

[R 자료구조] 3. 고급 자료구조

3. 고급 자료구조 벡터는 1차원 자료 구조로서 많은 데이터를 담지 못한다. 이에 R은 보다 다양한 데이터를 담을 수 있는 자료구조를 제공한다. 3.1. 데이터 프레임 - data.frame() : 외형적으로 엑셀 스프레드시트 처럼 생김. 데이터를 읽어들여올 경우 대부분 df라고 보면 됨. 2차원의 자료 구조. 통계적 관점에서 봤을 때 각 열은 하나의 변수이고 각 행은 하나의 관측값이 된다. data.frame을 어떻게 구성하는지 살펴보면, 각 열은 실제 vector이며 각 vector의 길이는 같다. 각 열이 서로 다른 타입의 데이터를 가질 수 있게한다는 점에서 매우 중요한 의미를 가진다. 즉, 이것은 하나의 열 내에서 각 원소가 반드시 같은 타입이어야 함을 의미한다. 데이터 프레임은 data.fram..

728x90