728x90

R 프로그램을 이해하는데에서 가장 핵심적인 내용입니다.

3강 데이터객체(1)4강 데이터객체(2) 에서 R에서의 데이터 객체를 설명하면서

각 개체마다 요소를 접근하는 방법을 다루었습니다.

여기서는 일정 조건에 해당되는 요소를 찾는 방법에 대하여 다룹니다.

우선 100에서 500까지 5개의 원소로 구성된 벡터에서 300보다 같거나 작은 원소들을 구하는 예입니다.

 

 

1. 300보다 적은 요소를 추출하기

 

조건에 맞는 요소를 추출하기

> vec01 <- c(100,200,300,400,500)                                               
> vec01[vec01<=300] 

> vec01 <- 1:6                                                                                         
> vec01[vec01>5] <-100; vec01
 
> set.seed(100)  
> x=rnorm(30); x
> id <- x>0; id    
> x[id]                     

 

[설명]

(1) vec01<=300 의 의미

vec01<=300를 실행하면 각 요소에 조건이 맞으면 TRUE, 맞지 않으면 FALSE 가 됩니다.

 

(2) 벡터에서 조건에 맞은 요소를 추출하는 방법을 설명합니다.

> vec01 <- c(100,200,300,400,500)

> vec01[c(T,T,T,F,F)] 

    [1] 100 200 300

 

5개의 원소로 구성된 vec01에서 [c(T,T,T,F,F)] 에 따라 True 해당 되는 요소 1,2,3 번째가 추출됩니다.

 

(3) 다시 한 번 정리 

> cond <- vec01 <= 300     
     # 
벡터 vec01에서 300보다 같거나 작은 경우 T,T,T,F,F cond 에 저장

> cond
     # TRUE TRUE TRUE FALSE FALSE

> vec01[cond]
      # cond 
의 조건에 ᄄᆞ라 벡터 vec01에서 추출합니다.

[1] 100 200 300

 

(4) 문자열을 이용한 원소 추출

> gender <- c('F','F','M','M','F')

> gender=='F'

      [1] TRUE TRUE FALSE FALSE TRUE

> gender[gender=='F']

      [1] "F" "F" "F"

 

 

2. 조건에 따라 벡터 값 변경하기  

 조건에 따라 벡터의 값을 변경하는 문제입니다.

vec01요소값이 5 보다 크면 100 으로 수정하는 프로그램입니다.

 

> vec01 <- 1:6
> vec01[vec01>5] <-100
vec01

 

vec01 요소값이 3 보다 크면 0 으로 하고, 음수이면 원래 값 그대로 취하는 예입니다.

> vec01 <- -2:5;      # 단순히 -2에서 5까지 구성된 벡터입니다.  
> vec01
> vec02 <- ifelse(vec01>3,0,vec01) ; vec02     

(1)  ifelse 문의 의미

 

> vec01 <- -2:5; vec01

[1] -2 -1 0 1 2 3 4 5

> vec02 <- ifelse(vec01>3,0,vec01) 

> vec02

[1] -2 -1 0 1 2 3 0 0

 

ifelse 문을 사용하는데, 

조건식 vec01>3을 만족하면 2번쨰 인수값인 0을 취하고, 

그렇지 않으면 3번째 인수값인 vec01 즉 원래 값을 가지게 됩니다.

 

3. 정규분포를 따르는 난수 30개를 만들고 0 보다 큰 난수 추출하기

 정규분포를 따르는 난수 30개를 생성하여 그 중에서 양수인 것만을 추출하는 프로그램입니다.

> set.seed(100)
> x=rnorm(30); x          # 정규분포를 따르는 난수 20개를 만들어 벡터 x를 만든다.
> id <- x>0                 # 벡터 x 의 각 값과 0을 비교하여 그 결과를 벡터 ld 에 저장합니다.
> id                           # 벡터 ld 의 내용을 보여준다. TRUE FALSE 로 구성되어 있습니다
> x[id]                         # 벡터 x에서 TRUE 에 해당되는 것을 선택합니다.

 

> x=rnorm(20); x

[1] -1.1449675 0.4536792 -0.8095622 -0.5001590 -1.1066958 1.9020943 -1.0791917

[8] 0.8514322 -0.2376299 2.0179738 1.5906313 0.3051587 0.6627297 -0.4050358

[15] 0.3355823 0.3047789 -0.2014310 -1.8665696 0.1553129 0.3390008

 

> id 

[1] FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE

[14] FALSE TRUE TRUE FALSE FALSE TRUE TRUE

 

> x[id]

[1] 0.4536792 1.9020943 0.8514322 2.0179738 1.5906313 0.3051587 0.6627297 0.3355823

[9] 0.3047789 0.1553129 0.3390008

 

 

'R 일반 > 6. R 프로그래밍(R)' 카테고리의 다른 글

(R1)제06강(9.1) 함수만들기  (0) 2020.11.24
(R1)제6강(00) R프로그래밍 목차  (0) 2020.11.19
(R1)제06강(8.1) sample 함수  (0) 2020.11.19

+ Recent posts