ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. Vector
    언어/R 2025. 1. 11. 22:17

    1. 벡터

    1차원, 동일한 데이터 형태 (숫자/문자/논리) 로 구성 → 숫자와 문자 섞여있으면 다 문자형

    • 벡터 생성 연산자는 ‘ : ‘ 사용
    • 항상 모든 계산은 괄호 먼저!
    • c 함수를 이용해 벡터 연결 가능
     

     


    2. 벡터 생성 연산자 ( : )와 c 함수를 이용한 벡터 생성

    // 숫자 형태 벡터 
    > x1 <- 1:5
     > x1 [1] 1 2 3 4 5 > x2 <- -(5:1) 
    
    // 괄호 연산 후 - 부호 
    > x2 [1] -5 -4 -3 -2 -1 
    > x3 <- rev(1:10) 
    
    // 10부터 1까지 거꾸로
     > x3 [1] 10 9 8 7 6 5 4 3 2 1 > x<-c(x1, x2) 
    > x [1] 1 2 3 4 5 -5 -4 -3 -2 -1 
    
    // 문자 형태 벡터 
    > x <- c("pen", "a", "b") 
    
    // 모두 따옴표를 붙여야 에러 안 남
     > x [1] "pen" "a" "b" 
    
    // 문자와 숫자 섞인 경우
     > x <- c(1, "a") 
    
    // 숫자는 문자로 변경 
    > x [1] "1" "a"

    3. 패턴이 있는 데이터 생성

    • seq(from = n, to = m, by = k) : k 간격으로 n부터 m까지 , by는 생략가능(default = 1)
    • seq(from = n, to = m, length = k) : n과 m사이에서 간격 맞춰서 k 개 생성, length는 꼭 써주기
    seq(1,10) //default by = 1 [1] 1 2 3 4 5 6 7 8 9 10 
    seq(1, 10, 2) 
    [1] 1 3 5 7 9
    > seq(1 10, length = 4) 
    [1] 1 4 7 10
    • rep(x, time = n, length.out=NA, each=m)
    • rep(x, n): x를 n번 반복
    • rep(x, each = m): x의 원소를 각각 m번씩 반복
    • rep(x, c(a, b)): x의 원소를 각각 a번, b번 반복 == each랑 똑같음.
    > rep(5, 4) [1] 5 5 5 5 
    > rep(1:3, 3) // req는 from과 to가 없음을 주의 
    [1] 1 2 3 1 2 3 1 2 3 
    
    > rep(c(2, 3, 5), 4) // 원소 여러 개 있으면 c로 묶어주기 
    [1] 2 3 5 2 3 5 2 3 5 2 3 5 
    
    > rep(c(2,3,5), each = 4) 
    [1] 2 2 2 2 3 3 3 3 5 5 5 5 
    > rep(c(2, 3, 5), c(1, 2, 3) 
    [1] 1 3 3 5 5 5

     

     

     

    4. 연산

    • 연산 순위: 괄호() > : > 나머지.. == : 가 가장 우선순위 높음
    • length() : 벡터의 길이 확인
    • 원소 대 원소끼리 연산한다.
    > x1 = c(5, 0, -4) 
    > x2 = c(1, 2, 2) 
    > x1 + x2 
    [1] 6 2 -2 
    
    > 1:10-1 
    [1] 0 1 2 3 4 5 6 7 8 9 
    
    >1:(10-1) 
    [1] 1 2 3 4 5 6 7 8 9
     
    • 재사용 규칙 : 길이가 다른 벡터끼리 연산하면 원소를 재사용한다.
    • 배수 관계이면 재사용 횟수가 동일해서 에러 없이 작동
    • 배수 관계가 아니면, 결과는 주어지지만 에러가 뜸
    > x1 <- c(5, 0, -4, -2) 
    > x2 <- c(2, 1) 
    > x1 / x2 
    [1] 2.5 0 -2.0 -2.0 
    > x3 <- 1:10 // 1 2 3 4 5 6 7 8 9 10 
    > x4 <- 4:1 // 4 3 2 1 
    > x3 / x4 // 배수가 아니라 원소의 재사용 개수 다름 
    [1] 0.25 0.67 1.50 4.00 1.25 2.00 3.50 8.00 2.25 3.33 warning message...
     

    5. 벡터 인덱싱: x[인덱스 번호]

    값을 가져오고 싶거나, 값을 바꾸고 싶을 때 사용

    > x <- c(5, 6, 7, 8) 
    > x[2:3] [1] 6 7 
    > x[c(1,1,2)] // 각각 인덱스로 접근: 1번, 1번, 2번 인덱스의 값 
    [1] 5 5 6 
    > x[-c(1,2)] //1번, 2번 인덱스 제외 
    [1] 7 8 
    > x[-length(x)] // 마지막 인덱스 제외
    [1] 5 6 7

    6. 논리형 벡터

    TRUE, FALSE의 값을 갖는 벡터 : 크기비교, and or 같은 애들 나오면 결과는 항상 참 거짓.

    • 논리값 연산자: > < ≥ ≤ == ≠
    • 복합 연산자: & | !
    • 원소 대 원소
    > x<--3:3 > y<-x>2 
    > y [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE 
    > u = c(5, 2, 3) > v = c(3, 2, 2) 
    > u > v 
    [1] TRUE FALSE TRUE
     

    7. 벡터 필터링

    특정 벡터에서 조건을 만족하는 원소 뽑아낼 때 사용

    • 사칙연산에서 결측값은 모두 NA(논리형)→na.rm=T 로 하면 NA 제외하고 나머지에 대해 계산
    • is.na(벡터): NA의 값 반환
    • which(조건): 조건에 맞는 값의 위치를 알려줌
    • x %in% y : x가 y 안에 포함되는지 확인
    • match(x, y): x가 y 안에 포함되면 그 값이 포함된 위치를 확인
    > x = c(5,2,-3,6) 
    > y<-x[x*x>8] 
    > y [1] 5 -3 6 
    > x[x*x>8]<-0 
    > x [1] 0 2 0 0
    // 결측값 사용 > x<-c(1,2,3,NA) 
    > mean(x) 
    [1] NA // 결측값 있어서 평균 알 수 없음 
    > mean(x, na.rm=T) // 결측값 빼고 나머지에 대해 평균 구하기 
    [1] 2 
    > x<-NULL // x를 null로 변환 
    > NULL > x<-c(x,2) // x = null 2이므로 x=2 
    > x [1] 2
    
    //is.na() 사용 
    > x <- c(1,2,3,NA,5) 
    > is.na(x)
     [1] FALSE FALSE FALSE TRUE FALSE // 논리 벡터라서 참 거짓으로 나옴 
    > x[!is.na(x)] // 결측값 제외하고 나머지 출력 
    [1] 1 2 3 5
    
    // which 사용 
    > x<-c(5,6,7,8,9) 
    > which(x>6) // 6보다 큰 값을 갖는 인덱스 출력
     [1] 3 4 5 
    > y<-which(x>9) //9보다 큰 값을 갖는 인덱스 출력 
    > y integer(0) // 9보다 큰 값을 갖는 인덱스 없음
    > length(y) [1] 0
    
    // %in% 과 match 
    > 3 %in% x 
    [1] TRUE 
    > c(3, 10) %in% x // 각각 알려줌 
    [1] TRUE FALSE 
    > x<-c(1,2,3,4) 
    > match(c(1,6), x) // 없는 값은 NA로 출력 
    [1] 1 NA
     

    8. 수치자료 통계함수

    • length()
    • min()
    • max()
    • range() : 범위
    • table() : 최빈값
    • mean() : 평균
    • var() : 분산
    • median() : 중앙값
    • sd() : 표준편차
    • quantile(): 분위수
    • IQR(): 사분위수 범위
    • summary() : 주요 통계
    • ceiling(): 올림
    • floor(): 내림
    • trunc(): 버림
    • round(x, digits = n): 소수점 n째 자리까지 (default digits = 0)

    '언어 > R' 카테고리의 다른 글

    2. R 기본 연산  (0) 2025.01.11
    1. R 소개  (0) 2025.01.11
Designed by Tistory.