SAS SPSS R-PROJECT S-PLUS PROC-SQL |
통 계 |
|
|
|
1. SAS | |
2. SPSS | |
3. R-PROJECT | |
4. S-PLUS | |
5. PROC SQL |
1. SAS |
* 다중 조건에 의한 변환을 위한 SAS 프로그램
* 성별에 따른 스코어1,스코어2 변수를 생성; DATA mydata; SET BACK.mydata; IF gender="m" THEN DO; score1 = (1.1*q1)+q2; score2 = (1.2*q1)+q2; END; ELSE IF gender="f" THEN DO; score1 = (2.1*q1)+q2; score2 = (2.2*q1)+q2; END; RUN; proc print;run; |
id workshop gender q1 q2 q3 q4 score1 score2 1 1 f 1 1 5 1 3.1 3.2 2 2 f 2 1 4 1 5.2 5.4 3 1 f 2 2 4 3 6.2 6.4 4 2 f 3 1 . 3 7.3 7.6 5 1 m 4 5 2 4 9.4 9.8 6 2 m 5 4 5 5 9.5 10.0 7 1 m 5 3 4 4 8.5 9.0 8 2 m 4 5 5 5 9.4 9.8 |
---|
2. SPSS |
DO IF (gender EQ 'm'). + COMPUTE score1 = (2*q1)+q2. + COMPUTE score2 = (3*q1)+q2. ELSE IF (gender EQ 'f'). + COMPUTE score1 = (20*q1)+q2. + COMPUTE score2 = (30*q1)+q2. END IF. EXECUTE. |
|
---|
3. R-PROJECT |
load(file="c:\\mydata.Rdata") print(mydata)
# mydata에 두개의 새로운 칼럼을 추가 하기 위하여 column bind를 이용. mydata <- cbind(mydata, score1 = 0, score2 = 0) attach(mydata) mydata$guys <- gender=="m" # 남성에 대하여 논리 벡터 생성. mydata$gals <- gender=="f" # 여성에 대하여 논리 벡터 생성. print(mydata)
# 로직에 의해 선택된 그룹에 기본 공식 적용. mydata$score1[gals]<- 2*q1[gals] + q2[gals] mydata$score2[gals]<- 3*q1[gals] + q2[gals] mydata$score1[guys]<-20*q1[guys] + q2[guys] mydata$score2[guys]<-30*q1[guys] + q2[guys] print(mydata)
* IFELSE함수를 사용하여 위 로직 적용. mydata$score1<-ifelse(mydata$gals, 2*q1*mydata$gals + q2*mydata$gals, 20*q1*mydata$guys + q2*mydata$guys) mydata$score2<-ifelse(mydata$gals, 3*q1*mydata$gals + q2*mydata$gals, 30*q1*mydata$guys + q2*mydata$guys)
# NULL값을 이용하여 guys와 gals변수를 삭제. mydata$gals <- mydata$guys <- NULL print(mydata)
|
4. S-PLUS |
mydata<-read.table ("c:/data/mydata.csv",header=TRUE, sep=",",row.names="id") print(mydata)
# mydata에 두개의 새로운 칼럼을 추가 하기 위하여 column bind를 이용. mydata <- cbind(mydata, score1 = 0, score2 = 0)
mydata$guys <- gender=="m" # 남성에 대한 논리벡터 생성. mydata$gals <- gender=="f" # 여성에 대한 논리벡터 생성. print(mydata)
# 로직에 의해 선택된 그룹에 기본 공식 적용. mydata$score1[mydata$gals]<- 2*q1[mydata$gals] + q2[mydata$gals] mydata$score2[mydata$gals]<- 3*q1[mydata$gals] + q2[mydata$gals] mydata$score1[mydata$guys]<-20*q1[mydata$guys] + q2[mydata$guys] mydata$score2[mydata$guys]<-30*q1[mydata$guys] + q2[mydata$guys]
# guys와 gals변수를 삭제. mydata$gals <- mydata$guys <- NULL print(mydata)
|
5. PROC SQL |
proc sql; select id, workshop,gender,q1,q2,q3,q4, case when gender='m' then (20*q1)+q2 else (2*q1)+q2 end "score1", case when gender='m' then (30*q1)+q2 else (3*q1)+q2 end "score2" from back.mydata; quit; |
id workshop gender q1 q2 q3 q4 score1 score2 ---------------------------------------------------------------------------------- 1 1 f 1 1 5 1 3 4 2 2 f 2 1 4 1 5 7 3 1 f 2 2 4 3 6 8 4 2 f 3 1 . 3 7 10 5 1 m 4 5 2 4 85 125 6 2 m 5 4 5 5 104 154 7 1 m 5 3 4 4 103 153 8 2 m 4 5 5 5 85 125 |
---|