R – 유용 함수 스크립트로 알아보기 (집합,행렬,데이터 프레임 등)

Script )

x=c(1,2,3)
y=c(3,4,5)
z=c(3,1,2)

# 집합 
union(x,y) #합집합
intersect(x,y) #교집합
setdiff(x,y) #차집합 (x에서 y와 동일한 요소 제거된 것들 출력)
setequal(x,z) # x와 z에 동일한 요소 있는지 확인 => True, False 

# 행렬
# n차원 배열 생성
x= array(1:5, c(2,4)) 
# 첫 번째 인수는 행렬에 넣을 값을 지정, 두 번째 인수에는 만들 행렬을 벡터로 지정 (2*4행렬)

x[1,] # 1행 요소 값 출력
x[.2] # 2열 요소 값 출력

#행과 열의 이름 생성 
dimnamex=list(c("a","b"),c("1st","2nd","3rd","4th"))
x=array(1:5,c(2,4),dimnames=dimnamex)
x
x["a",]
x[,"4th"]
x["a","3rd"]


# 행열을 matrix함수로 제작 
x=1:12
m.x<-matrix(x,nrow=3) # x데이터를 가지고 3행인 행렬을 만듬 
m.x

# 데이터를 행 단위(가로)로 배치 
matrix(x,nrow=3,byrow=T)

# 벡터를 합쳐서 행렬을 만듬
v1=c(1,2,3,4)
v2=c(5,6,7,8)
v3=c(9,10,11,12)

cb.m<-cbind(v1,v2,v3) # 벡터들을 열 단위(세로)로 배치
rbind(v1,v2,v3) # 벡터들을 행 단뒤(가로)로 배치

cb.m[3,3]
cb.m[3,"v3"]

# 정방행렬 만들기
x= array(1:4,dim=c(2,2))
y=array(5:8, dim=c(2,2))
x;y

# 행렬 연산 
x+y
x*y
x[1,]*y[1,]
x %*% y # 수학적인 행렬 곱셈  

# 전치 행렬 (열과 행을 바꿈)
t(x)

# 역행렬
inv.x<-solve(x)
# 행렬 * 역행렬 = 항등행렬(대각선 모두 1)이다.
x%*%inv.x

# 행렬식 (2*2행렬에서 행렬식은 ad-bc임) a b
                                      # c d
det(x)

# 행렬의 평균값 구하기 
x=array(1:12,c(3,4))
x
apply(x,1,mean) # 두 번째 인수가 1이면 -> 행 중심으로 평균값 구하기 
apply(x,2,mean) # 두 번째 인수가 2이면 -> 열 중심으로 평균값 구하기 

# 행과 열의 정보 알기
dim(x)

# 순열 만들기 (호출할 때마다 값들 위치가 변함)
sample(x)
sample(x,10) # 배열 요소 중 10개를 골라 추출
sample(x,10,prob=c(1:12)/24) # prob인수에 벡터로 각 요소별 추출 확률을 정할 수 있음!
sample(x,10,prob=c(100,100,100,100,100,100,100,100,100,100,0,0)) # 1~12요소 중 1~10만 나오게 하기!!
sample(10) # 요소가 1~10인 배열 중 숫자 10개를 골라 추출 

# 행렬 다른 방법으로 출력 
x
x[2:3,] # 2행~3행만 출력
x[,1:3] # 1열~3열만 출력 

# 3차원 배열
x<-array(1:12,dim=c(2,2,3))
x
x[2,2,3]
x[2,2,1]

# 데이터 프레임 (표 형태의 데이터)
name=c("철수","춘향","길동")
age=c(22,20,25)
gender=factor(c("M",'F','M'))
blood.type=factor(c("A","O","B"))
patients=data.frame(name,age,gender,blood.type) # data.frame함수만 사용하면 된다. 
patients

# 이처럼 한번에 쓸 수도 있음 
patients1<-data.frame(name=c("철수","춘향","길동"),
                      age=c(22,20,25),
                      gender=factor(c("M",'F','M')),
                      blood.type=factor(c("A","O","B"))
                      )
patients1

patients$name # 데이터 프레임의 속성 값 가져오기 => patients프레임의 name속성 값들 가져오기


# 데이터 프레임에 유용한 함수 살펴보기
data() # r에서 지원하는 데이터 프레임 목록 보기 
head(cars) # cars데이터프레임을 위부터 보기 (기본적으로 6행만 보여줌)
attach(cars) # 데이터 프레임의 속성을 변수처럼 사용
speed
mean(speed)
mean(dist)
max(dist)
boxplot(dist)
detach(cars) # 변수처럼 사용하는 속성을 해제
# 해제된 뒤에 속성으로 함수처리를 하고 싶을 때는 with를 이용한다. 
with(cars,mean(speed))
# 20 초과인 데이터만 추출 (데이터 프레임,속성을 이용한 처리,나타낼 속성 값들)
subset(cars,speed>20)
subset(cars,speed>20,dist) # speed가 20이상인 dist출력

북 참고) R로 배우는 데이터 과학

Leave a Reply

Your email address will not be published. Required fields are marked *