- 벡터 (1차원)
x= c(1,4,6,8,9) ## c()가 생성자임
#기본함수
order(x) || rev(x) -- 오름차순 || 내림차순
sort(x,decreasing=TRUE)
range(x)
mean,sd(x),length(x)
#자료조작
x[2] = 4 ##인덱스가 자바와는 다르게 정말 순수한 순서이다
x[2<x & x<5] = 4 ## 이런식으로 조건문로 인덱싱 할 수도 있다.
y = replace(x, c(2,4) , c(32,24)) ## x, 바꿀위치, 바꿀내용 바꿀수도 있다.
y= [1 32 6. 4 9]
w= append(x,y) #두개의 벡터를 합치는것도 ㄱㄴ
##집합연산
#순서에 따라 비교하기.
x = c(1,2,3)
y= c(4,5,6)
x==y >> FALSE, FALSE, FALSE
#같은 집합인지? (순서고려 xx)
union(x,y) ## 합집합
intersect(x,y) ## 교집합
setequal(x,y) >>FALSE
is.element(3,x) -- 3이 x에 있는가?
##문자 자료 벡터
x=rep(c("A","B","C"),times =4) ## A와 B가 4번씩 반복 총 8개 벡터가 생성
unique(x) ## A,B,C 3개만 나오겠다 이러면
match(x,c("A")) = A ,NA, NA ... 이런식으로 말그대로 match해보는 것!
z=paste(x[1],x[3]) z가 x 1,3값을 가진 벡터가..
## 논리형 벡터
x= runif(5) ## 0-1 사이 값 5개 생성.
any(x>0.8) -- x중 뭐든 0.8 있냐?
all(x<0.7)
#냅다 조건문 박기
(x>0.4) - 0.4보다 큰 값이 4개면 TRUE TRUE TRUE TRUE FALSE..
- 행렬
2차원 형태로 동일한 타입의 자료로 구성.
벡터 데이터 생성 후 합치는 방식으로 구성한다.
row1 = c(1,2,3)
row2 = c(4,5,6)
mat1 = rbind(row1,row2) ##행 기준으로 행의 이름이 포함된다.
row1 1 2 3
row2 4 5 6
mat2 = cbind(row1, row2) ## 열 기준으로 열의 이름이 포함된다.
row1 row2
1 4
2 5
3 6
matrix() 라는 함수로도 표현가능.
mat2 = matrix(chars, ncol=5) ## chars라는 녀석이 abcdefghij 일 경우
mat2
a c e g i
b d f h j 이런 느낌으로
mat3 = matrix(1:8, nrow= 2), >> byrow= FALSE로 하면 열 기준으로
이렇게 하면 행 2개짜리로 행렬이 설정됌
1 3 5 7
2 4 6 8 이런식으로.
## 행과 열 의 이름을 한번에 설정하며 행렬을 만들어보자 dimnames
mat4 = matrix(1:12, nrow =3, dimnames = list(c("r1","r2","r3"), c("c1","c2","c3","c4")))
- 데이터프레임 -배열데이터들의 합
no= c(1,2,3,4)
names = c("apple","banana", "peach", "berry")
prices = c(500,200,300,400)
qty = c(5,2,3,4)
fruit = data.frame(No =no, Names = names, Prices = prices, Qty = qty)
No Names Prices Qty
1 apple 500 52
2 banana 200 23
3 peach 300 34
4 berry 400 4
## 여기서 행 아니면 열의 이름을 바꾸고싶다면?
rownames(fruit) = c("r1","r2","r3","r4")
colnames(fruit) = c("c1", ........."c4")
#조작하는법
#1. 특정 행 추출
fruit['F1',] >> f1 행 추출
#2. 특정 열 추출
fruit $ names
#3. 파생변수 생성
fruit $ pricesum = fruit $ prices + fruit $ qty
#자료구조 관찰하기
dim() - dimension
nrow,ncol - 행 렬 수
colnames() - 열 이름
class() - 자료구조 알아내기
str() - 요약 정보
unique - 중복된거 제거하고 뭐 있는지
- factor
벡터인데 문자형 데이터인거
이미 지정한 값의 종류 이외의 값이 들어오는 것을 막는 장점이 있다. strict한 기준을 지니고 있다.
example) 약간 혈액형 같은 데이터 다룰때..
f= c('a','b','ab','o','ab','ab')
factor_f = factor(f)
levels(f_factor) >> a b ab o ## 요골로 유니크한 값들로 벡터로 구성할 수 도 있겠다.
##이 외의 값이 들어올경우 input을 막는다.
as.Integer(f_factor) -- a기준으로 1 ab 2 이렇게 쭉쭉 늘어난다.
- 리스트
키와 값의 형태로 데이터를 구성한다. like hashmap
Member = list(name ="Lee", address = "Seoul", tel = "123", ssn ="020200")
## 이런식으로 활용한다.
member $ name = name값
##리스트의 인덱스 하나에는 key,value 한쌍이 들어있다.
member[1:3] = name, address, tel > 이 3가지의 Key값에 들어있는 값들을 보여준다
'R studios' 카테고리의 다른 글
R통계 : Theme #6. Tidy. (0) | 2024.05.27 |
---|---|
R통계 : Theme#5. 데이터 정제 (결측치와 이상치) 다루기 (0) | 2024.05.27 |
R통계 : Theme #4. Dplyr package (0) | 2024.05.27 |
R 통계 : Theme #3 : 데이터 조작 ( 기본 함수) (1) | 2024.05.27 |
R 통계 : Theme #2. 데이터 저장 및 불러오기 (0) | 2024.05.27 |