Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
R 프로그래밍 기초 #1 
R의 설치 및 기본 데이타 형 
2014.11.11 조대협 http://bcho.tistory.com
R 설치 및 환경 
• BLAS( Basic Linear Algebra System) 
– 리눅스에는 행렬과, 벡터의 내적과 선형 대수 연산을 수행하기 위한 라이브러리 
– Reference implementation ...
패키지관리 
• CRAN을 이용하여, 패키지 설치 가능 
• R 스튜디오 “Packages”메뉴에서 관리 가능 (설치, 목록보기, 삭제등) 
명령 예제 설명 
install.package(“ 
패키지 
명”,depend...
변수 및 함수 인자 정의 
• 변수 
– 변수명 
• 알파벳 또는 “.”으로 시작해야 한다. 
• 알파벳,숫자, “_”, “.” 사용 가능 
※ “-”는 사용 불가능함. 
– 변수값 할당 
• `=` 또는 <-, <<-...
스칼라 
• 단일 차원의 값 (1차원 값) 
• NA : “데이타 값이 없음” 을 표현. is.na(x)로 체크 cf. NULL 
• NULL : “변수가 초기화 되지 않음” 
• 문자열 : char와 같은 단일 문자타...
팩터 
• 범주형 데이타 (cf. Enumeration) 
– 명목형 (Nominal) 
– 순서형 (Ordinal) 
factor(“이름”,”값의 레벨”,순서여부 디폴트는 FALSE) 
ex) sex<-factor(“...
벡터 
• 일종의 배열의 개념으로 다음과 같은 특성이 있음 
– 슬라이스 : 배열의 일부를 잘라낸 뒤, 이를 또 배열 처럼 사용 가능 
– 셀에 이름 바구 가능 
• 선언 : c(값1,값2,값3) 
명령 예제 설명 
c...
벡터의 연산 
명령 예제 설명 
identical(x,y) - 두 벡터가 동일한지 비교 
union(x,y) 
> x 
c1 c2 c3 c4 c5 
1 2 3 4 5 
> y 
[1] -1 4 5 6 
> union(x...
리스트 
• 자바의 해시 테이블과 유사 (key,value) 
x  list(key=value,key=value…) 
> x <-list(name='terry',age=100) 
> x 
$name 
[1] "terr...
행렬 
• 행렬 생성 
matrix( data, nrow=행수,ncol=컬럼수,byrow=FALSE,dmnames=NULL) 
• data : 행렬에 들어갈 데이타 
• nrow : 행렬의 행수 
• ncol:행렬의 컬...
행렬 
• 행렬 함수 
명령 예제 설명 
A[i,j] 행렬 A의 i,j 원소 
A[1:3,] 행렬 1~3열 
A[-2,] 행렬에서 2열을 제외한값 
A[,1:2] 행렬에서 1,2컬럼의 값 
A+x 행렬의 모든 원소에 스...
배열 
• 행렬이 2차원 데이타라면, 배열은 다차원 데이타 
array( 데이타, dim=length(data),dimnames=NULL) 
• 데이타 : 배열의 데이타 
• dim : 행렬의 차원, ex) dim=c(...
데이타 프레임 
• 데이타 프레임은 일종의 액셀의 스프레드시트와 같이 데이타를 정리하는 타입 
• 각 컬럼의 ROW수가 같아야 함 
data.frame( 
컬럼명=데이타, 
컬럼명=데이타 
: 
 f <- data.f...
데이타 프레임 
명령 예제 설명 
f$colname 데이타프레임 f에서 colname으로 된 컬럼의 데이타 리턴 
f$colname<-y 데이타 프레임 f에서 colname으로 된 컬럼의 값을 y로 세팅 
str(f) ...
타입 판별 및 변환 
• 타입 판별 
– class(x) : 객체 x 의 클래스 반환 
– str(x) : 객체 x 내부의 데이타 구조 
– is.factor(x),is.numeric(x),is.character(x) ...
Prochain SlideShare
Chargement dans…5
×

R 기본-데이타형 소개

25 261 vues

Publié le

R에 대한 설명.
첫번째로 R 설치법과 데이타 형에 대한 소개

Publié dans : Données & analyses
  • Identifiez-vous pour voir les commentaires

R 기본-데이타형 소개

  1. 1. R 프로그래밍 기초 #1 R의 설치 및 기본 데이타 형 2014.11.11 조대협 http://bcho.tistory.com
  2. 2. R 설치 및 환경 • BLAS( Basic Linear Algebra System) – 리눅스에는 행렬과, 벡터의 내적과 선형 대수 연산을 수행하기 위한 라이브러리 – Reference implementation (구현체에 따라 성능 차이가 많이남) • libblas • ATLAS implementation (libatlas) • OpenBLAS implementation (libopenblas) • R Benchmark 를 이용하여 라이브러리 성능 측정 • R 개발 환경 – R Studio (vi 에디터, emacs 에디터 형 플러그인 有)
  3. 3. 패키지관리 • CRAN을 이용하여, 패키지 설치 가능 • R 스튜디오 “Packages”메뉴에서 관리 가능 (설치, 목록보기, 삭제등) 명령 예제 설명 install.package(“ 패키지 명”,dependency) install.package(“benchmark ”,TRUE); dependency = [NA|TRUE|FALSE] TRUE이면, 의존성 있는 패키 지가 함께 설치됨 update.packages( ask=TRUE); 현재 설치되어 있는 패키지중 에 업데이트가 있으면 설치한 다. ask=FALSE이면, 물어보지 않고 모든 패키지를 최신 버전 으로 업데이트 한다. library(“패키지 명”,help) 패키지를 로드하여 사용할 준 비를 한다. cf. Import
  4. 4. 변수 및 함수 인자 정의 • 변수 – 변수명 • 알파벳 또는 “.”으로 시작해야 한다. • 알파벳,숫자, “_”, “.” 사용 가능 ※ “-”는 사용 불가능함. – 변수값 할당 • `=` 또는 <-, <<- 사용 • 함수 인자 정의 foo(a,b,c=3,d=4) • foo(1,2) : a=1,b=2,c=3,d=4 • foo(1,2,99) : a=1,b=2,c=99,d=4 • foo(10,20,30,a=99) : a=99,b=10,c=20,d=30
  5. 5. 스칼라 • 단일 차원의 값 (1차원 값) • NA : “데이타 값이 없음” 을 표현. is.na(x)로 체크 cf. NULL • NULL : “변수가 초기화 되지 않음” • 문자열 : char와 같은 단일 문자타입은 없음. 문자열을 ‘’또는 “”로 묶는다 • 진리값 : TRUE,FALSE로 표현 – &(AND),|(OR),!(NOT) 연산자 사용 가능  벡터의 요소별 연산 c(TRUE,TRUE) & c(TRUE,FALSE) = TRUE,FALSE – &&, || (두개의 요소 연산)
  6. 6. 팩터 • 범주형 데이타 (cf. Enumeration) – 명목형 (Nominal) – 순서형 (Ordinal) factor(“이름”,”값의 레벨”,순서여부 디폴트는 FALSE) ex) sex<-factor(“m”,c(“male”,”female”) 명령 예제 설명 nlevel(x) nlevel(sex) 팩터의 레벨 개수 levels(x) levels(sex) levels(sex)<-c(“m”, “f”) 레벨값 변경 levels(sex)[1] levels(sex)[2] 팩터의 레벨값을 리턴함 is.factor(x) is.factor(sex) 해당 변수가 팩터인지 리턴 ordered(“이름”, “값의레벨”) > s <- ordered("a",c("a","b","c")) > s [1] a Levels: a < b < c 순서형 팩터 생성 is.ordered(x)
  7. 7. 벡터 • 일종의 배열의 개념으로 다음과 같은 특성이 있음 – 슬라이스 : 배열의 일부를 잘라낸 뒤, 이를 또 배열 처럼 사용 가능 – 셀에 이름 바구 가능 • 선언 : c(값1,값2,값3) 명령 예제 설명 c(“값1”,”값2”,…”); x<-c(1,2,3) 벡터 생성 names(x)  c(“이름1”,”이름2”,…) names(x) <- c(“c1”, “c2”, “c3”); 각 셀에 이름을 지정함 names(x) names(x) 각 셀의 이름을 리턴함 x[n] x[2] N번째 요소를 리턴 x[-n] x[-2] N번째 요소를 제외하고 리턴 x[“셀이름”] x[“c1”] “셀이름”으로 지정된 벤터의 요소를 반환 x[start:end] x[1:3] 벡터의 start~end까지 요소을 반환 length(x) 벡터의 길이 nrow(x) 행렬에만 사용 가능 NROW(x) 벡터와 행렬 모두 사용 가능 ※ 벡터의 요소는 1 부터 시작함 x[1] ※ 벡터는 열벡터를 사용함 열벡터 c : 한열로 m*1 행렬 행벡터 r: 한행으로 된 1*n 행렬
  8. 8. 벡터의 연산 명령 예제 설명 identical(x,y) - 두 벡터가 동일한지 비교 union(x,y) > x c1 c2 c3 c4 c5 1 2 3 4 5 > y [1] -1 4 5 6 > union(x,y); [1] 1 2 3 4 5 -1 6 합집합 x에만 있는 값이 먼저 들어가고, 그 다음 x,y에 공통적으로 있는 값, 그리 고 y에만 있는 값 순으로 합쳐짐 intersect(x,y) - 교집합 setdiff(x,y) - 차집합 setequal(x,y) > a<-c(1,1,2,3); > b<-c(1,2,3); > identical(a,b); [1] FALSE > setequal(a,b); [1] TRUE 벡터를 집합으로 (중복제거) 취급하여 비교 value %in%x > 1 %in% x [1] TRUE 벡터 x에 “value”가 저장되어 있는지 판단 x+n > x c1 c2 c3 c4 c5 1 2 3 4 5 > x+1 c1 c2 c3 c4 c5 벡터의 각 요소에 n을 더함 ※ 마찬가지로 *,/,-,= 연산자 사용 가능 연속된 숫자로 구성된 벡터 seq(from,to,by) > z<-seq(1,10,2) > z [1] 1 3 5 7 9 from~to까지 by씩 증가하는 벡터 생성 ※ by는 생략하면 1 1씩 증가하는 경우 간단하게 x<-3:7 ,x<-7:3식으로 “seq”생략 가능 반복된 값을 저장한 벡터 rep(x,times,each) > rep(1:2,times=5); [1] 1 2 1 2 1 2 1 2 1 2 > rep(1:2,each=5) [1] 1 1 1 1 1 2 2 2 2 2 > rep(1:2,each=5,times=2) [1] 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 x 벡터를 times 횟수 만큼 반복. 반복시 each 횟수 만큼 개별 요소를 반복
  9. 9. 리스트 • 자바의 해시 테이블과 유사 (key,value) x  list(key=value,key=value…) > x <-list(name='terry',age=100) > x $name [1] "terry" $age [1] 100 > x['name'] $name [1] "terry" > x$age $age [1] 100 명령 예제 설명 x$key x$age > 100 리스트 x에서 key에 해당 하는 값 x[n] x[1] > $name,[1] “terry” 리스트 x에서 n번째 key,value 값 x[[n]] x[[1]] > [1] “terry” 리스트 x에서 n번째 value 값 • 리스트 안에, 리스트를 넣는 중첩형 리스트 지원 > c<-list(a=list(val=c(1,2,3)),b=list(val=c(1,2,3,4))); > c $a $a$val [1] 1 2 3 $b $b$val [1] 1 2 3 4
  10. 10. 행렬 • 행렬 생성 matrix( data, nrow=행수,ncol=컬럼수,byrow=FALSE,dmnames=NULL) • data : 행렬에 들어갈 데이타 • nrow : 행렬의 행수 • ncol:행렬의 컬럼 수 • byrow :값을 로우 우선으로 넣음. (FALSE이면, 행렬을 세로로 먼저 채움, TRUE이면 가로로 먼저 채움) • dmnames 각차원에 대한 이름  matrix(c(1,2,3,4,5,6,7,8,9),nrow=3)  [,1] [,2] [,3]  [1,] 1 4 7  [2,] 2 5 8  [3,] 3 6 9  > matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,byrow=TRUE)  [,1] [,2] [,3]  [1,] 1 2 3  [2,] 4 5 6  [3,] 7 8 9  matrix(1:9,nrow=3,dimnames=list(c("r1","r2" ,"r3"),c("c1","c2","c3")))  c1 c2 c3  r1 1 4 7  r2 2 5 8  r3 3 6 9
  11. 11. 행렬 • 행렬 함수 명령 예제 설명 A[i,j] 행렬 A의 i,j 원소 A[1:3,] 행렬 1~3열 A[-2,] 행렬에서 2열을 제외한값 A[,1:2] 행렬에서 1,2컬럼의 값 A+x 행렬의 모든 원소에 스칼라 x를 더한다 A+B 전치행렬 행렬 A와 B의 합 A %*% B 행렬 A와 B의 곱 t(A) 전치행렬 (transposed matrix) 퐴푇 solve(a,b) 행렬a*행렬x = 행렬 b에서, 행렬 x를 구한다. (다차 방정식을 풀때 사용) solve(x) x의 역행렬 (역행렬 퐴*퐴−1 = 퐸 , 퐸는 단위 행렬) dim(x) 행렬 x의 차원수 nrow(x) 행렬 x의 행수 ncol(x) 행렬 x의 열수 det(x) 행렬 x의 행렬식 (determinant)
  12. 12. 배열 • 행렬이 2차원 데이타라면, 배열은 다차원 데이타 array( 데이타, dim=length(data),dimnames=NULL) • 데이타 : 배열의 데이타 • dim : 행렬의 차원, ex) dim=c(3,4) 3x4 배열 dim=c(2,2,3) 2x2x3 배열 ※ 배열은 세로(열) 부터 채워짐  a = array(1:12,dim=c(3,4))  > a  [,1] [,2] [,3] [,4]  [1,] 1 4 7 10  [2,] 2 5 8 11  [3,] 3 6 9 12 명령 예제 설명 A[i,j] 배열의 i,j 원소 A[1:10,] 배열의 1:10 열
  13. 13. 데이타 프레임 • 데이타 프레임은 일종의 액셀의 스프레드시트와 같이 데이타를 정리하는 타입 • 각 컬럼의 ROW수가 같아야 함 data.frame( 컬럼명=데이타, 컬럼명=데이타 :  f <- data.frame( x=1:9, y=11:19)) ;  > f  x y  1 1 11  2 2 12  3 3 13  4 4 14  5 5 15  6 6 16  7 7 17  8 8 18  9 9 19  > f <- data.frame( x=1:9, y=11:30)  Error in data.frame(x = 1:9, y = 11:30) : arguments imply differing number of rows: 9, 20
  14. 14. 데이타 프레임 명령 예제 설명 f$colname 데이타프레임 f에서 colname으로 된 컬럼의 데이타 리턴 f$colname<-y 데이타 프레임 f에서 colname으로 된 컬럼의 값을 y로 세팅 str(f) 데이타 프레임 f의 구조를 리턴 f[i,j,drop=false] f[,c(“x”)] 컬럼명이 x인 컬럼만 f[,names(f) %in% c(“b”,”c”)] b,c 컬럼만 선택 f[,!names(f) %in% c(“a”)] 컬럼명이 a인것만 빼고 데이타 프레임 i열,j값 drop=FALSE이면, 데이타들만을 리턴 drop=TRUE이면, 데이타 프레임형 데이타 형으로 리턴 head(x,n=6L) head(x) 처음 6항만 리턴함 (디폴트가 6항) 데이타 프레임 x에서 처음 N항을 리턴 tail(x,n=6L) tail(x) 마지막 6항만을 리턴함 (디폴트가 6항) 데이타 프레임 x에서 마지막 N항을 리턴함 View(f) ※ 대소문자주의 데이타 프레임 f를 뷰 윈도우로 보여줌 (윈도우 창을 띄워줌) (편집은 안되더라)  class(f[1:10,1])  [1] "integer"  > class(f[1:10,1,FALSE])  [1] "data.frame"
  15. 15. 타입 판별 및 변환 • 타입 판별 – class(x) : 객체 x 의 클래스 반환 – str(x) : 객체 x 내부의 데이타 구조 – is.factor(x),is.numeric(x),is.character(x) : 문자열인지 판단,is.matrix(x),is.array(x),is.data.frame(x) • 타입 변환 – as.factor(x) : x를 factor형으로 변환 – as.numerix(x),as.character(x),as.matrix(x),as.array(x),as.data.frame(x)

×