R studios

R통계 : Theme #1. 기본적인 데이터 타입

Frisbeen 2024. 5. 27. 16:56
  1. 벡터 (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..

  1. 행렬
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")))

  1. 데이터프레임 -배열데이터들의 합
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 - 중복된거 제거하고 뭐 있는지
  1. 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 이렇게 쭉쭉 늘어난다.
  1. 리스트

키와 값의 형태로 데이터를 구성한다. 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값에 들어있는 값들을 보여준다