SAS SPSS R-PROJECT S-PLUS PROC-SQL |
통 계 |
|
|
|
1. SAS | |
2. SPSS | |
3. R-PROJECT | |
4. S-PLUS | |
5. PROC SQL |
1. SAS |
* 각 성별에 대한 q1의 평균을 구한다.; PROC SUMMARY DATA=BACK.mydata MEAN NWAY; CLASS GENDER; VAR q1; OUTPUT OUT=myAgg; RUN; PROC PRINT; RUN;
DATA myAgg; SET myAgg; WHERE _STAT_='MEAN'; KEEP gender q1; RUN; PROC PRINT; RUN;
* workshop와 성별을 기준으로 q1의 평균을 구한다.; PROC SUMMARY DATA=mydata MEAN NWAY; CLASS WORKSHOP GENDER; VAR Q1; OUTPUT OUT=myAgg; RUN; PROC PRINT; RUN;
* 평균을 선택한다.; DATA myAgg; SET myAgg; WHERE _STAT_='MEAN'; KEEP workshop gender q1; RENAME q1=meanQ1; RUN; PROC PRINT; RUN;
* mydata에 집계된 데이터를 Merge한다.; PROC SORT DATA=BACK.mydata out=mydata; BY workshop gender; RUN; PROC SORT DATA=myAgg; BY workshop gender; RUN; DATA SASUSER.mydata2; MERGE mydata myAgg; BY workshop gender; run; PROC PRINT; RUN;
|
2. SPSS |
* SPSS Program for Aggregating/Summarizing Data. * Get mean of q1 by gender. GET FILE='C:\mydata.sav'. AGGREGATE /OUTFILE='C:\myAgg.sav' /BREAK=gender /q1_mean = MEAN(q1). GET FILE='C:\myAgg.sav'. LIST. EXECUTE.
* Get mean of q1 by workshop and gender. GET FILE='C:\mydata.sav'. AGGREGATE /OUTFILE='C:\myAgg.sav' /BREAK=workshop gender /q1_mean = MEAN(q1). GET FILE='C:\myAgg.sav'. LIST. EXECUTE.
* Merge aggregated data back into mydata. GET FILE='C:\mydata.sav'. SORT CASES BY workshop (A) gender (A) . MATCH FILES /FILE=* /TABLE='C:\myAgg.sav' /BY workshop gender. SAVE OUTFILE='C:\mydata.sav'. EXECUTE. |
|
---|
3. R-PROJECT |
* Aggregating / Summarizing 데이터를 위한 R-Project 프로그램.
* [참 고] RESHAPE 라이브러리
load(file="c:\\mydata.Rdata") print(mydata) attach(mydata)
# 필요한 패키지 로드. 필요시 사전에 인스톨 해야한다. library(Hmisc) library(reshape)
# Aggregate함수는 R-Project에서 만들어진 함수이다. # Aggregate함수는 변수에 대하여 새 변수명을 생성한다. # Gender는 단일 오브젝트임에 불구하고 List함수내에 들어가 있다. myAgg<-aggregate(q1, by=list(gender), FUN=mean, na.rm=TRUE) print(myAgg)
# workshop과 gender를 기준으로 집계. myAgg<-aggregate(q1, by=list(workshop,gender), FUN=mean, na.rm=TRUE) print(myAgg)
# Summarize함수는 Hmisc라이브러리에 존재. # Summarize함수는 원 변수명을 유지하고, 라벨 존재시 라벨 역시 유지한다. library(Hmisc) # 성별에 대하여. myAgg<-summarize(q1, by=gender, FUN=mean, na.rm=TRUE) print(myAgg)
# Workshop과 gender에 대하여 Summary myAgg<-summarize(q1, by=llist(workshop,gender), FUN=mean, na.rm=TRUE) print(myAgg)
# Mydata에 집계된 값을 Merge한다. # 먼저, q1변수명을 mean.q1으로 변경. myAgg<-rename(myAgg, c(q1="mean.q1")) print(myAgg)
# Mydata에 위의 값을 Merge한다. mydata2<-merge(mydata,myAgg,by=c("workshop","gender") ) print(mydata2)
|
4. S-PLUS |
mydata<-read.table ("c:/data/mydata.csv",header=TRUE, sep=",",row.names="id") print(mydata)
attach(mydata)
# Aggregate함수는 변수에 대하여 새 변수명을 생성한다. # Gender는 단일 오브젝트임에 불구하고 List함수내에 들어가 있다. myAgg<-aggregate(q1, by=list(gender), FUN=mean, na.rm=TRUE) print(myAgg)
# workshop과 gender를 기준으로 집계. myAgg<-aggregate(q1, by=list(workshop,gender), FUN=mean, na.rm=TRUE) print(myAgg)
names(myAgg)[names(myAgg)=="Group.1"] <-"workshop" names(myAgg)[names(myAgg)=="Group.2"] <-"gender" names(myAgg)[names(myAgg)=="x"] <-"mean.q1" print(myAgg)
# Mydata에 집계된 데이터 Merge. mydata2<-merge(mydata,myAgg,by=c("workshop","gender") ) print(mydata2)
|
5. PROC SQL |
proc sql; create table myAgg as select GENDER, MEAN(q1) as q1_mean from BACK.mydata group by GENDER; select * from myAgg; quit;
proc sql; create table myAgg as select WORKSHOP, GENDER, MEAN(q1) as q1_mean from BACK.mydata group by 1,2; select * from myAgg; quit;
* Sub-Query를 이용하여 평균을 가로 결합; proc sql; create table myAgg as select a.*,b.q1_mean from BACK.mydata a , ( select workshop,gender, mean(q1) as q1_mean from BACK.mydata group by workshop,2 ) b where a.workshop = b.workshop and a.gender = b.gender; select * from myAgg; quit;
|