[R] 자료형 - 1.scalar type 2.Vector
자료형
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