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로 배우는 데이터 과학