728x90

SAS/IML에서 예로 들었던 프로그램을 R로 변환한 것입니다.

(1) SAS에서는 주석표시를 할 때 *를 사용하지만 R에서는 주석표시로 #을 사용합니다.

(2) SAS에서는 SAS/IML 이라는 별도의 제품을 구입해야 하지만

    R에서는 기본 데이터객체로 행렬(Matrix) 객체를 지원합니다.
(3) SAS/IML 은 자주 사용되는 제품이 아닙니다.(분야에 따라 차이가 있겠지만).

   그래서 SAS/IML 을 사용하지 말고 R을 사용하시는 것을 추천드립니다.

 

# 프로그램 이름 matrix.R

# 행렬만들기

m1 <- matrix(c(1,2,3,4,5,6),ncol=3) # 열이 3인 행렬 만들기

m1 # 행렬 m1을 프린트하기

m1 <- matrix(c(1,2,3,4,5,6),nrow=3);m1 # 행이 3인 행렬 만들기

m1 <- matrix(c(1,2,3,4,5,6),ncol=3,byrow=T);m1 # 1 2 3/ 4 5 6 행반향 우선

m1 <- matrix(c(1,2,3,4,5,6),2,3,byrow=T);m1 # 2 X 3 행렬 만들기

m0 <- matrix(0,2,3) ; m0 # 행렬 2 X 3 모든 요소가 0

 

# 행렬의 요소에 접근하기

m1 <- matrix(c(1,2,3,4,5,6),nrow=2,byrow=T);m1

# 1 2 3

# 4 5 6

 

m1[,3] # 3 (3 6)

m1[1,] # 1 ( 1 2 3)

m1[2] # 2 번째 요소 (4)

m1[2:5] # 3~5 째 요소 ( 4 2 5 3)

 

m1[,-3] # 3 제외하기

m1[,-(2:3)] # 2~3 제외하기, 1행만 남음

 

# 행렬 연산

m1 <- matrix(c(1,2,3,4,5,6),nrow=2,byrow=T);m1

m100 <- matrix(c(100,200,300,400,500,600),nrow=2,byrow=T);m100

m1+3 #

m1*3 #

m1+m100 #

m1-m100 #

m1*m100 # element product

m1 %*% t(m1) # (2 by 3) X (3 by 2)

m1/m100 #

 

 

# 전치, 대각행렬 구하기

m1 <- matrix(c(1,2,3,4,5,6),nrow=2,byrow=T);m1

mt1 <- t(m1) ; mt1 # transpose

md1 <- diag(m1) ; md1 # get diagonal element

 

# 역행렬 구하기

m1 <- matrix(c(1,2,3,4),nrow=2,byrow=T);m1

minv1 <- solve(m1) ; minv1

minv3

'SAS, R, Python 일반 > 12. SAS_IML' 카테고리의 다른 글

(S1)제12강(1.1) SAS에서 R 실행하기  (0) 2021.01.19
12.0 SAS/IML 목차  (0) 2020.08.06
12.2. SAS/IML 사용법 기초(s1)  (0) 2020.07.10
12.3 SAS/IML 응용 - 회귀분석  (0) 2020.06.27
12.1 SAS/IML 이란?  (0) 2020.06.27

+ Recent posts