Skip Headers

SAS  SPSS  R-PROJECT  S-PLUS  PROC-SQL

통 계
프 로 그 램 비 교

Go to Documentation Home
HOME
Go to Book List
PRO_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
R-PROJECT
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

1. 변수 변환


1. SAS
2. SPSS
3. R-PROJECT
4. S-PLUS
5. PROC SQL

 

Logical Operators

See also help(Logic) and  help(Syntax).

 

SAS

SPSS

R

Equals

= or EQ

= or EQ

==

Less than

< or LT

< or LT

<

Greater than

> or GT

> or GT

>

Less or equal

<= or LE

<= or LE

<=

Greater or equal

>= or GE

>= or GE

>=

Not equal

^=, <> or NE

~= or NE

!=

And

& or AND

& or AND

&

Or

| or OR

| or OR

|

0<=x<=1

0<=x<=1

(X >= 0) AND

(X <= 1)

(x >= 0) & (x<=1)

Missing value size

Missing is less than all numbers

Comparisons with missing are set to NA

Comparisons with missing are set to NA

Symbol to represent missing in comparisons

"."

MISSING or SYSMIS

is.na(x)

(Note that ==NA can never be true.)

 

맨 위로 이동 맨 위로 이동


1. SAS

MAIN

* 변수 연산을 통해서 새로운 변수 생성.;

DATA mydata4;

 SET BACK.mydata;

     totalq  = (q1+q2+q3+q4);

     totalq1 = sum(of q1-q4);

     totalq2 = sum(q1,q2,q3,q4);

     logtot  = log10(totalq);

     mean1   = (q1+q2+q3+q4)/4;

     mean2   = mean(of q1-q4);

run;

PROC PRINT data=mydata4;

RUN;

workshop    gender    q1    q2    q3    q4    totalq    totalq1  totalq2    logtot    mean1      mean2

 1         f        1     1     5     1       8          8          8      0.90309     2.00    2.00000

 2         f        2     1     4     1       8          8          8      0.90309     2.00    2.00000

 1         f        2     2     4     3      11         11         11      1.04139     2.75    2.75000

 2         f        3     1     .     3       .          7          7       .           .      2.33333

 1         m        4     5     2     4      15         15         15      1.17609     3.75    3.75000

 2         m        5     4     5     5      19         19         19      1.27875     4.75    4.75000

 1         m        5     3     4     4      16         16         16      1.20412     4.00    4.00000

 2         m        4     5     5     5      19         19         19      1.27875     4.75    4.75000


맨 위로 이동 맨 위로 이동


2. SPSS

MAIN

 

* SPSS Program for Transforming Variables.

GET FILE='C:\mydata.sav'.

COMPUTE Totalq=q1+q2+q3+q4.

COMPUTE Logtot=lg10(totalq).

COMPUTE Mean1=(q1+q2+q3+q4)/4.

COMPUTE Mean2=MEAN(q1 TO q4).

SAVE OUTFILE='C:\mydata.sav'.

LIST.

EXECUTE.

 

 

맨 위로 이동 맨 위로 이동


3. R-PROJECT

MAIN

* 변수 변환을 위한 R-Project 프로그램.

load(file="c:\\data/mydata.Rdata")

print(mydata)

 

# q변수의 총합인 totalq 변수 생성.

mydata$totalq <- mydata$q1 + mydata$q2 + mydata$q3 + mydata$q4

workshop gender q1 q2 q3 q4 totalq

1        1      f  1  1  5  1      8

2        2      f  2  1  4  1      8

3        1      f  2  2  4  3     11

4        2      f  3  1 NA  3     NA

5        1      m  4  5  2  4     15

6        2      m  5  4  5  5     19

7        1      m  5  3  4  4     16

8        2      m  4  5  5  5     19

 

# totalq의 LOG값 구하기.

mydata$logtot <- log( mydata$totalq )

workshop gender q1 q2 q3 q4 totalq   logtot

1        1      f  1  1  5  1      8 2.079442

2        2      f  2  1  4  1      8 2.079442

3        1      f  2  2  4  3     11 2.397895

4        2      f  3  1 NA  3     NA       NA

5        1      m  4  5  2  4     15 2.708050

6        2      m  5  4  5  5     19 2.944439

7        1      m  5  3  4  4     16 2.772589

8        2      m  4  5  5  5     19 2.944439

 

# q변수의 평균 생성.

# 만약 결측치 존재시, 결과역시 결측치.

mydata$meanq1  <- ( mydata$q1 + mydata$q2 + mydata$q3 + mydata$q4 )/4

workshop gender q1 q2 q3 q4 totalq   logtot meanq1

1        1      f  1  1  5  1      8 2.079442   2.00

2        2      f  2  1  4  1      8 2.079442   2.00

3        1      f  2  2  4  3     11 2.397895   2.75

4        2      f  3  1 NA  3     NA       NA     NA

5        1      m  4  5  2  4     15 2.708050   3.75

6        2      m  5  4  5  5     19 2.944439   4.75

7        1      m  5  3  4  4     16 2.772589   4.00

8        2      m  4  5  5  5     19 2.944439   4.75

 

# q변수의 평균 구하기.

# subset함수는 select함수에 선택된 변수를 선택.

myqs <- subset(mydata,select=c(q1,q2,q3,q4) )

q1 q2 q3 q4

1  1  1  5  1

2  2  1  4  1

3  2  2  4  3

4  3  1 NA  3

5  4  5  2  4

6  5  4  5  5

7  5  3  4  4

8  4  5  5  5

 

# 결측치를 제외 하고, 평균을 생성.

mydata$mymeanq2 <- rowMeans( myqs, na.rm=TRUE )

workshop gender q1 q2 q3 q4 totalq   logtot meanq1 mymeanq2

1        1      f  1  1  5  1      8 2.079442   2.00 2.000000

2        2      f  2  1  4  1      8 2.079442   2.00 2.000000

3        1      f  2  2  4  3     11 2.397895   2.75 2.750000

4        2      f  3  1 NA  3     NA       NA     NA 2.333333

5        1      m  4  5  2  4     15 2.708050   3.75 3.750000

6        2      m  5  4  5  5     19 2.944439   4.75 4.750000

7        1      m  5  3  4  4     16 2.772589   4.00 4.000000

8        2      m  4  5  5  5     19 2.944439   4.75 4.750000

 

# transform함수를 이용하여 동시에 다수 변수 생성.

Mydata <- transform(mydata,
sum=q1+q2+q3+q4,
mean=(q1+q2+q3+q4)/4)

 workshop gender q1 q2 q3 q4 sum mean
1       1      f 1   1  5  1   8  2.00
2       2      f 2   1  4  1   8  2.00
3       1      f 2   2  4  3  11  2.75
4       2      f 3   1 NA  3  NA  NA
5       1      m 4   5  2  4  15  3.75
6       2      m 5   4  5  5  19  4.75
7       1      m 5   3  4  4  16  4.00
8       2      m 4   5  5  5  19  4.75

 

# 초기화된 변수를 먼저 생성후에, 그 변수에 데이터를 대체.

Mydata <- data.frame(cbind(mydata,sum=0.))

Mydata[7] <- Mydata$q1+Mydata$q2+Mydata$q3+Mydata$q4

 workshop gender q1 q2 q3 q4 sum
1       1      f  1  1  5  1   8
2       2      f  2  1  4  1   8
3       1      f  2  2  4  3  11
4       2      f  3  1 NA  3  NA
5       1      m  4  5  2  4  15
6       2      m  5  4  5  5  19
7       1      m  5  3  4  4  16
8       2      m  4  5  5  5  19

 

save.image(file="c:\\mydata.Rdata") # R 파일 저장.

 

맨 위로 이동 맨 위로 이동


4. S-PLUS

MAIN

* 변수 변환을 위한 S-PLUS

# q변수의 총합인 totalq 변수 생성.

mydata$totalq <- mydata$q1 + mydata$q2 + mydata$q3 + mydata$q4

# totalq의 LOG값 구하기.

mydata$logtot <- log( mydata$totalq )

# q변수의 평균 생성.

# 만약 결측치 존재시, 결과역시 결측치.

mydata$meanq1  <- ( mydata$q1 + mydata$q2 + mydata$q3 + mydata$q4 )/4

# q변수의 평균 구하기.

myqs <- myqs <- mydata[,c(3:6)]

# 결측치를 제외 하고, 평균을 생성.

mydata$mymeanq2 <- rowMeans( myqs, na.rm=TRUE )

 

print(mydata) #Prints the results.

  workshop gender q1 q2 q3 q4 totalq   logtot meanq1 mymeanq2

1        1      f  1  1  5  1      8 2.079442   2.00 2.000000

2        2      f  2  1  4  1      8 2.079442   2.00 2.000000

3        1      f  2  2  4  3     11 2.397895   2.75 2.750000

4        2      f  3  1 NA  3     NA       NA     NA 2.333333

5        1      m  4  5  2  4     15 2.708050   3.75 3.750000

6        2      m  5  4  5  5     19 2.944439   4.75 4.750000

7        1      m  5  3  4  4     16 2.772589   4.00 4.000000

8        2      m  4  5  5  5     19 2.944439   4.75 4.750000

 

맨 위로 이동 맨 위로 이동


5. PROC SQL

 

options linesize=150;

proc sql;

  create table mydata4 as

    select *,

           q1+q2+q3+q4        as totalq,

           sum(q1,q2,q3,q4)   as totalq1,

           log10(q1+q2+q3+q4) as logtot,

           (q1+q2+q3+q4)/4    as mean1,

           mean(q1,q2,q3,q4)  as mean2

    from   BACK.mydata;

  select * from mydata4;

quit;

id  workshop  gender    q1      q2      q3      q4    totalq   totalq1    logtot     mean1     mean2

----------------------------------------------------------------------------------------------------

 1         1  f          1       1       5       1         8         8   0.90309         2         2

 2         2  f          2       1       4       1         8         8   0.90309         2         2

 3         1  f          2       2       4       3        11        11  1.041393      2.75      2.75

 4         2  f          3       1       .       3         .         7         .         .  2.333333

 5         1  m          4       5       2       4        15        15  1.176091      3.75      3.75

 6         2  m          5       4       5       5        19        19  1.278754      4.75      4.75

 7         1  m          5       3       4       4        16        16   1.20412         4         4

 8         2  m          4       5       5       5        19        19  1.278754      4.75      4.75


맨 위로 이동 맨 위로 이동