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연습 200제 > 11. 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 |