다른 명령
R명령어
파이프 오퍼레이터 (%>%)
- 파이프 오퍼레이터는 R에서 동일한 데이터를 대상으로 연속으로 작업하게 해주는 오퍼레이터(연산자).
- %>%를 사용하면 함수 간의 관계를 매우 직관적으로 표현
일반함수 | R 표현.방법 |
---|---|
F(x) | x %>% F |
G(F(x)) | x %>% F %>% G |
- 예제)
x = c(0.3078, 0.2577, 0.5523, 0.0564, 0.4685, 0.4838, 0.8124, 0.3703, 0.5466, 0.1703)
1) 일반 언어에서 처리
x1 = log(x) x2 = diff(x1) x3 = exp(x2) round(x3, 2)
2) R 파이프 오퍼레이터로 처리
x %>% log() %>% diff() %>% exp() %>% round(., 2)
- 맨 왼쪽에는 원하는 변수를 입력
- %>% 뒤에는 차례대로 계산하고자 하는 함수 입력
- 변수의 입력값을 ()로 비워둘 경우, 오퍼레이터의 왼쪽에 있는 값이 입력 변수
- 반면 round()와 같이 입력값이 두 개 이상 필요하면 마침표(.)가 오퍼레이터의 왼쪽 값으로 입력
변수정의
rm()
- 변수 삭제
ls()
- 현재 선언해서 사용중인 변수목록
setwd()
- 작업파일 위치
getwd()
- 현재 설정된 파일위치
summary([데이터이름])
- 최솟값,1/4값,중간값,평균,1/3값,최댓값의 써머리 출력
data()
- 데이터를 사용하겠다는 선언
str()
- 데이터 구성/자료형 보기
attach()
- 변수/데이터 를 메모리에 고정
as.numeric()
- 데이터를 숫자형으로 변환
detach()
- 메모리에 선언된 변수 해제
예외 처리
tryCatch() 함수로 예외처리 하고 넘어갈 수 있음
result = tryCatch({ ..실행 코드.. }, warning = function(w) { # 경고 발생시 warning-handler-code }, error = function(e) { # 에러 발생시 error-handler-code }, finally = { # 무조건 수행 , 생략 가능 cleanup-code })
파일읽기/쓰기
save(x,file="number.Rdata")
- x변수값을 "number.Rdata"로 저장
load("number.Rdata")
파일내용읽기
sink("output.txt")
scan("파일이름",what="디렉토리")
설정된 디렉토리에서 파일읽기
read.table("output.txt",header=T)
테이블 형태로 읽기
read.table("testdata.txt", header=T)
CSV읽기
- read.csv("exeldata.csv")
데이터형
y[1,]
- 첫행 읽기
y[,1]
- 1열읽기
Vector
- v<- -5:5
- -5 ~ 5사이값을 할당
- v<-c(-5,5)
- -5,5를 할당
- v<-c(-5:5) - v<-seq(from=-5,to=5,by=1) - vector집합연산
- union(x,y)
- 합집합-중복제거
- intersect
- 차집합
- setdiff(x,y)
- x기준, y값을 빼준것
- is.element(2,x)
- 2가 x의 원소인지 검사
- x<-c(sort(sample(1:99,9)))
- 문자형vector
- unique(x) - match(x,c("A"))
- x의 데이터가 A와 같은지검사하고 같으면 1을 출력,NA는같지않음
- k<-paste(x[1],x[3])
- 벡터x에서 첫번째,세번째 문자를 k에 할당
- paste(x,collapse="%")
- x를 구성하는 문자열을 %로 연결하기
- paste(x,collapse=)
- x를 구성하는 문자열을 공백없이 연결
- substring(m,2:5)
- m객체 문자열에서 2~끝,3~끝,4~끝,5~끝 을 출력
- grep("Co",x)
- x에서 "Co"로 시작하는 것을 찾는다.
- 논리형 vector
- x<- runif(5)
- 0,1 사이의 난수 다섯 개를 만들어 x에 할당
- any(x>0.9)
- x값이 조건에 맞는지 검사
- all(x<0.9)
- 모든x의 값들이 0.9보다 작은지 검사
- is.vector(x) - is.factor(x)
- 데이터형이 팩터인지 확인
- x<-rnum(5)
- 평균이 0인 정규분포하는 변수5개를 x에 할당
Factor
- factor()
- 데이터를 팩터형으로 변환
Matrix
- 행렬
- 2차원 동일형 데이터 - 각 컬럼별 다른형 데이터 할당가능 - rbind()
- 벡터데이터를 모아서 열 데이터를 구성 - rbind(array1,array2,array3)
- cbind()
- 행데이터 구성 - cbind(array1,array2,array3)
- apply()
- 배열,행렬등에 함수를 적용한 결과를 벡터,배열,리스트로 변환 - apply(x,1,max)
- x데이터 1열의 최대값
- apply(x,1,sum) - apply(x,2,mean)
- lapply()
- 결과를 리스트로 반환
- sapply()
- 결과를 벡터,배열,행렬로 반환 - sapply(리스트,sum)
- tapply()
- 데이터를 그룹핑한후 함수 적용
- mapply()
- sapply()확장
- 여러개 벡터,리스트로인자를 받고 함수에 인자별 적용 결과를 반환 - mapply(sum,리스트1,리스트2)
- 리스트1+리스트2
- colnames(x)
- 컬럼 이름을 추가
- rownames(x)
- 로우 이름을 추가
- colSums(x)
- 컬럼의합
- rowSums(x)
- 로우의 합
- matrix(x,nrow=3)
- x데이터 열을 3으로 분리하여 행렬 구성 - 데이터를 매트릭스형으로 만들기 함수 - 매트릭스변수x * 3 은?
- 매트릭스 전체에 2를 곱한다.
- matrix(1:12,nrow=3,dimnames=list(c("R1","R2","R3"),c("C1","C2","C3","C4")))
- colSums(x)
- 행렬데이터x의 컬럼 합
- rowSums(x)
- 행렬데이터x의 로우 합
- colMeans - rowMeans
Data Frame
- data.frame() - 예시
- 데이터만들기
no<- c(1,2,3,4) name<- c("A","B","C","D") ages<-c(52,53,54,55) sex<-c("M","M","F","M")
- 데이터프레임으로 변환
Insa<-data.frame(No=no,Name=name,Age=ages,Sex=sex)
- 데이터처리
insa[1,] Insa[,2:4] Insa[,-3]
Array
- 행렬을 2차원으로 확장한것 - x<-array(1:24,dim=c(2,3,4))
List
- 키,값 형태 데이터 - listdata<- c("A",c(12,21,33))
반복처리
rep()
- rep(1:3,times=2,len=7) - rep(1:3,each=3)
- 1을 3번,2를 3번,3을 3번 반복
seq()
- seq(from=1,to=12,by=0.5)
범위처리
mean()
- 평균
range
- 범위
sort
- sort(x,decreasing=TRUE)
length
- 길이
출력
cat()
- cat()
- 텍스트 출력
print()
(괄호)
head()
tail()
View()
- 데이터를 보여주기
함수
선언
fnc_a <- function(){ x<-10 y<-20 result<-x+y return(result) }
사용
- fnc_a()
함수저장
- save(fnc_a,fnc_b,fnc_c,x,file="myfunction.Rdata")
- 1개의 변수,3개의 함수를 Rdata파일에 같이 저장
함수불러오기
- load("myfunction.Rdata"
- ls()
조건문
runif(1)
- 0~1사이 난수 1개 생성
if
-- 한줄 처리 if(x>0) print(x) if ( ) { .... } ifelse{ .... }else { .... }
switch
switch(x[3], "1" = print("one") , "2" = print("one") , print("Error") )
반복문
for
for (i in 1:5) { for (j in 1:5) { .... } }
while
while (i <= 10){ .... }
repeat
repeat{ .... if(...) break; }
연산자
!
가감승제
- + - * /
비교
- == - !=
그리고
- &,&&
또는
- |,||
기호 =
[ i ]
- i번째 요소
[ ( i ) ]
- i번째 리스트
x $ a
- x에서 a컬럼
x $ "a"
- x에서 a컬럼
x[ i , j ]
- i행 , j열
문자열
grep()
- grep("정규식",x,value-TRUE) - x에서 정규식 문자 찾기
nchar()
- nchar(x) - 문자열 수를 센다
paste
- paste(x,y) - 두개 문자열 합치기
substr
- substr(x,6,8) - 6번째에서 8번째까지 추출
strsplit
- strsplit(x,split-",") - 콤마기준으로 나누기
정규식
\\d
\\s
\\w
\\t
+
- 1회이상
?
- 0 이거나 1회
*
- 0회이상
{ }
- 횟수 반복 - {i,j}
- i ~ j회 반복
[:alnum:]
- 아파벳+숫자 - [:alpha:]
[:blank:]
- 공백
[:cntrl:]
- 제어문자
[:upper:]
- 대문자 - [:lower:]
- 소문자