R

[R] 자료형 - 1.scalar type 2.Vector

ㄷㅐ장님 2022. 1. 8. 04:41

자료형

1. 단일값만 저장하는 변수 : scalar type

x<-100

2. vector(벡터)

: 같은 데이터 타입을 갖는 1차원 배열구조

-c( ) : combine value

-벡터는 중첩할 수 없다

-데이터 변환규칙(integer < double(numeric) < character)

  x<-c(10,20,30,40,50) —c(컬럼=값, 컬럼=값)

 

컬럼이름 수정

  names(y)<-c(”새컬럼명”)

열이름 삭제

  names(y)<-NULL

벡터의 길이

  length(y)

  NROW(y)

 

인덱싱

: 배열 방번호를 기준으로 찾는다. R의 방번호는 1부터 시작한다.

  names(y)[1]

  y[-1] : 1번방 제외

  y[c(-1,-2)] : 벡터를 이용해서 여러개의 방을 선택할 수 있다

 

슬라이싱

  y[1:3]

  y[-1:-2]

연속되는 값을 표현하는 방법

   x<-1:100

   y<-c(1:10000)

   options(max.print = 1000) : 화면의 출력해야할 수를 조절하는 방법 기본값:1000

 

seq(시작값,종료값,증가분)

: 자동 일련번호를 생성하는 객체 (SQL : SEQUENCE)

  벡터 변수 길이만큼 시퀀스 값을 생성 :

 seq(1,length(x),1)

   1:length(x)

   1:NROW(X)

   

seq_along(x)

: 반복되는 값을 생성하는 함수

   rep(1:10,times=2) : times = n 시작과 종료까지를 n번 반복

   rep(1:10,each=2) : each = n 각각의 숫자를 n번 반복

   rep(1:10,times=2,each=2)

 

벡터값을 수정

   x[2]<-16

   x[2]<-NA : 결측값으로 수정

   x<-NULL : 변수 초기화

 

벡터값 추가하는 방법

   x[7]<-16

벡터값 제일 뒤에 새로운 값을 추가 :

   append(벡터변수,새로운값, after=인덱스번호)

   append(x,20,after=length(x))

   x[length(x)+1]<-19

 

벡터연산

   x<-10:15

   x[1]+100 x+100 x^2

 

서로 다른 벡터 변수의 값을 비교

   x<-c(1,2,3)

   y<-c(1,2,3)

   x==y : 벡터 변수 안에 있는 인덱스(요소번호, 방번호)끼리 값을 비교

   identical(x,y) :벡터 변수의 길이, 인덱스의 값, 데이터타입 전부 일치하면 TRUE

 

 x1<-c(1,2,3)

   x2<-c(2,3,1)

   x1==x2 : FALSE FALSE FALSE 인덱스끼리 비교(오류/출력)

   identical(x1,x2) : FALSE  인덱스끼리 비교(T/F값)

   setequal(x1,x2) : TRUE 집합에 있는 값으로만 비교(T/F값)

 

 x<-1:5 :정수

   z<-c(1,2,3,4,5) :실수

   identical(x,z) : FALSE

   setequal(x,z) : TRUE

as.integer() 실수형, 문자숫자 -> 정수형으로 변환하는 함수

  as.numeric() 정수형, 문자숫자 -> 실수형으로 변환하는 함수

 

집합연산

   x<-c(1,2,3,4)

   y<-c(1,4,6)

   union(x,y) : 합집합

   intersect(x,y) : 교집합

   setdiff(x,y) : 차집합

   UNION ALL : Z <- c(x,y)

 

백터 변수에 값이 있는지를 확인

   x<-c(1,2,3,4,5,1,2,1)

   1 %in% x : X변수에 1이 있으면 TRUE

   x %in% 1 : X변수 안에 1이 있으면 그 위치에 TRUE

   x[x %in% 1] : x변수 안 1만 찾아내기

   y[y == 'a'] : NA를 포함시켜서 찾는다

   y[y %in% 'a'] : NA 제외시키고 찾는다

 

조건에 해당하는 인덱스 번호를 찾는 방법

   which(y=='a')

   y[which(y=='a')]

   y[which(y=='a')|which(y=='b')] : y변수에 있는 값 전부 출력됨

   y[which(y=='a'|y=='b')] : y변수 안 a,b만 찾기

 

NA찾는 방법

  is.na(y) : is null

  !is.na(y) : is not null

  y[!is.na(y)] : NA 제외

 

  NA가 있는 인덱스 번호를 찾는 방법

  which(is.na(y))

  y[which(is.na(y))]

  NA 결측치값 을 찾아서 동일한 값으로 수정

  y<-c('a','b',NA,'a','b',NA)

  which(is.na(y)) y[which(is.na(y))] <- 'c'

 

정렬 sort(x)

   sort(x,decreasing=FALSE)  : 오름차순-기본값

   sort(x,decreasing = TRUE) : 내림차순


[문제1] x변수에 1,3,5,7,9 값을 입력, y 변수에 1,2,3,4,5 값을 입력하세요.

더보기
x <- c(1,3,5,7,9)
y <- c(1,2,3,4,5)

[문제2] x 변수와 y 변수를 중복성 없이 하나로 합친후에 u 변수에 넣어 주세요.

더보기
u <- union(x,y)

[문제3] x 변수와 y 변수의 값들중에 중복성만 추출해서 i 변수에 넣어주세요.

더보기
i <- intersect(x,y)

[문제4] x 변수의 값과 y 변수의 값중에 순수하게 x 변수에 들어 있는 값만 추출해서 m 변수에 넣어 주세요.

더보기
m <- setdiff(x,y)

[문제5] x 변수의 값과 y 변수의 값이 일치가 되면 TRUE 아니면 FALSE를 출력해주세요.

더보기
setequal(x,y)

[문제6] x 변수에 값들을 10을 곱한 결과를 x 변수에 적용하세요.

더보기
x <- x*10

[문제7] x 변수에 있는 50을 5로 수정하세요.

더보기
x[which %in% 50] <- 5

[문제8] x 변수에 있는 10 30 5 70 90을 원래의 값으로 1,3,5,7,9로 되돌려 주세요. 단 union, 정수 나누기, sort 만 사용하세요.

더보기
x <- sort(union(x[-which %in% 5]  %/% 10, x[which %in% 5]))

[문제9] x변수에 11숫자를 제일 뒤에 입력하세요. 단 append와 length를 이용하세요.

더보기
x <- append(x,11,after=length(x))

[문제10] x 변수에 제일 뒤에 있는 값을 NA로 수정하세요. 단 length를 이용하세요.

더보기
x[lengh(x)] <- NA