본문 바로가기
통계프로그램 비교 시리즈/데이터 전처리 비교

통계프로그램 비교 시리즈 – [변수와 관측치 선택] 1. 변수 선택하기

by 기서무나구물 2022. 1. 6.

 [변수와 관측치 선택] 1. 변수 선택하기

 


1. Proc SQL

 

  • 기본적으로 Select구문 안에서 변수 선택이 가능하고, From 절 또는 Create table 절에 지정된 데이터 세트에 Keep, Drop 옵션을 지정하여서 변수 선택 가능.
SAS Programming
proc sql;
  select *
  from   BACK.Mydata;
quit;

 

Results
id  workshop  gender        q1        q2        q3        q4
------------------------------------------------------------
 1         1  f              1         1         5         1
 2         2  f              2         1         4         1
 3         1  f              2         2         4         3
 4         2  f              3         1         .         3
 5         1  m              4         5         2         4
 6         2  m              5         4         5         5
 7         1  m              5         3         4         4
 8         2  m              4         5         5         5

 

  • q변수만을 선택 후에 q1, q2, q3, q4변수를 지정하여 출력.
SAS Programming
proc sql;
  select q1,q2,q3,q4
  from   BACK.Mydata(keep=q:);
quit;

 

Results
q1        q2        q3        q4
---------------------------------
  1         1         5         1
  2         1         4         1
  2         2         4         3
  3         1         .         3
  4         5         2         4
  5         4         5         5
  5         3         4         4
  4         5         5         5

 

 

  • 세 개의 변수를 삭제 후 출력.
SAS Programming
proc sql;
  select *
  from   BACK.Mydata(drop=id workshop gender);
quit;

 

Results
 q1        q2        q3        q4
---------------------------------
  1         1         5         1
  2         1         4         1
  2         2         4         3
  3         1         .         3
  4         5         2         4
  5         4         5         5
  5         3         4         4
  4         5         5         5

 

 

  • q변수 전체를 선택 후 출력.
SAS Programming
proc sql;
  select *
  from   BACK.Mydata(keep=q:);
quit;

 

 

  • 전체 변수 선택후 q변수만을 출력.
SAS Programming
proc sql;
  create table Mydata1(keep=q:) as
   select *
   from   BACK.Mydata;

   select * from Mydata1;
quit;

 

Results
 q1        q2        q3        q4
--------------------------------
 1         1         5         1
 2         1         4         1
 2         2         4         3
 3         1         .         3
 4         5         2         4
 5         4         5         5
 5         3         4         4
 4         5         5         5

 


2. SAS Programming

 

  • 변수 선택을 위한 SAS프로그램
SAS Programming
* 최종 데이터를 BACK.mydata로 지정;

libname 'c:\data';
OPTIONS _LAST_=BACK.mydata;
PROC PRINT;
RUN;

 

Results
OBS    id    workshop    gender    q1    q2    q3    q4
 1      1        1         f        1     1     5     1
 2      2        2         f        2     1     4     1
 3      3        1         f        2     2     4     3
 4      4        2         f        3     1     .     3
 5      5        1         m        4     5     2     4
 6      6        2         m        5     4     5     5
 7      7        1         m        5     3     4     4
 8      8        2         m        4     5     5     5

 

 

SAS Programming
PROC PRINT;
     VAR workshop gender q1 q2 q3 q4;
RUN;

 

Results
OBS    workshop    gender    q1    q2    q3    q4
 1         1         f        1     1     5     1
 2         2         f        2     1     4     1
 3         1         f        2     2     4     3
 4         2         f        3     1     .     3
 5         1         m        4     5     2     4
 6         2         m        5     4     5     5
 7         1         m        5     3     4     4
 8         2         m        4     5     5     5

 

 

  • workshop과 q4사이의 모든 변수 선택
SAS Programming
PROC PRINT;
     var workshop--q4;
RUN;

 

Results
OBS    workshop    gender    q1    q2    q3    q4
 1         1         f        1     1     5     1
 2         2         f        2     1     4     1
 3         1         f        2     2     4     3
 4         2         f        3     1     .     3
 5         1         m        4     5     2     4
 6         2         m        5     4     5     5
 7         1         m        5     3     4     4
 8         2         m        4     5     5     5

 

 

  • q로 시작되는 변수 선택
SAS Programming
PROC PRINT;
     var workshop gender q1-q4;
RUN;

 

Results
OBS    workshop    gender    q1    q2    q3    q4
 1         1         f        1     1     5     1
 2         2         f        2     1     4     1
 3         1         f        2     2     4     3
 4         2         f        3     1     .     3
 5         1         m        4     5     2     4
 6         2         m        5     4     5     5
 7         1         m        5     3     4     4
 8         2         m        4     5     5     5

 

 

  • 선택된 변수를 가진 데이터 생성하기.;
  • q로 시작되는 모든 변수 선택;
SAS Programming
DATA BACK.myqs;
 SET BACK.mydata(KEEP=q:);
RUN;

PROC PRINT DATA=BACK.myqs;
RUN;

 

Results
OBS    q1    q2    q3    q4
 1      1     1     5     1
 2      2     1     4     1
 3      2     2     4     3
 4      3     1     .     3
 5      4     5     2     4
 6      5     4     5     5
 7      5     3     4     4
 8      4     5     5     5

 


3. SPSS

 

  • 변수 선택을 위한 SPSS프로그램.
SPSS Programming
LIST.
LIST VARIABLES=workshop,gender,q1,q2,q3,q4.
LIST VARIABLES=workshop TO q4.

* 선택된 변수로 데이터 세트 생성.
SAVE OUTFILE='c:\myqs.sav' /KEEP=q1 TO q4.
EXECUTE.

 


4. R Programming (R-PROJECT)

 

 

R Programming
from rpy2.robjects import r
%load_ext rpy2.ipython

 

Results
The rpy2.ipython extension is already loaded. To reload it, use:
  %reload_ext rpy2.ipython

 

  • 변수 선택을 위한 R-Project프로그램.
  • 기본적으로 인덱스를 사용하여 변수를 지정할 수 있다.
R Programming
%%R
# 데이터 로드하기.

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

# 모든 데이터 출력하기.

print(mydata)

 

Results
  workshop gender q1 q2 q3 q4
1        1      f  1  1  5  1
2        2      f  2  1  4  1
3        1      f  2  2  4  3
4        2      f  3  1 NA  3
5        1      m  4  5  2  4
6        2      m  5  4  5  5
7        1      m  5  3  4  4
8        2      m  4  5  5  5

 

1) INDEX를 사용한 변수 선택

  • 모든 변수 선택하기.
R Programming
%%R

print( mydata[ ])
print( mydata[ , ] )

 

Results
  workshop gender q1 q2 q3 q4
1        1      f  1  1  5  1
2        2      f  2  1  4  1
3        1      f  2  2  4  3
4        2      f  3  1 NA  3
5        1      m  4  5  2  4
6        2      m  5  4  5  5
7        1      m  5  3  4  4
8        2      m  4  5  5  5

 

 

  • 3번째 변수(q1) 선택.
R Programming
%%R

print(mydata[3])

 

Results
  q1
1  1
2  2
3  2
4  3
5  4
6  5
7  5
8  4

 

 

  • 인덱스를 사용하여서 변수 q1, q2, q3, q4 선택하기 위한 방법.
R Programming
%%R

print( mydata[ c(3,4,5,6) ] ) # 인덱스 사용.
print( mydata[ 3:6 ] )        # “:” 인식자 사용하여 인덱스 생성.
print( mydata[ -c(1,2) ] )    # 첫번째,두번째 변수를 제외.
print( mydata[ -I(1:2) ] )    # colon 인식자를 사용하여 변수 제외.

 

Results
  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

 

 

  • 반복하여서 열의 범위를 이용한다면, Numeric 벡터에 전체 범위를 저장하면 유용.
R Programming
%%R
myindexes <- 3:6

# 인덱스 확인
print( myindexes )

 

Results
[1] 3 4 5 6

 

 

R Programming
%%R
print( mydata[myindexes] )

 

Results
  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

 

 

  • 마이너스 부호를 이용하여 3번째부터 6번째(3:6 변수)에 위치한 변수를 제외
R Programming
%%R
print( mydata[-myindexes] )

 

Results
  workshop gender
1        1      f
2        2      f
3        1      f
4        2      f
5        1      m
6        2      m
7        1      m
8        2      m

 

 

  • '%in%' 함수는 이름의 전체 벡터를 비교하여 일치 여부를 반환한다.
  • mydata 데이터 세트에 존재하는 변수 중에서 q1~q4변수 이름과 일치 여부를 반환한다.
R Programming
%%R

names(mydata) %in% c("q1","q2","q3","q4")

 

Results
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE

 

 

  • 'which' 함수는 TRUE인 인덱스 번호를 출력한다.
  • myvar 변수에 단일 인덱스를 저장.
R Programming
%%R

myvars <- which( names(mydata) %in% c("q1","q2","q3","q4") )
print(myvars)

 

Results
[1] 3 4 5 6

 

 

R Programming
%%R

print( mydata[ ,myvars] )

 

Results
  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에 저장되어 있다.
  • names함수로 변수 이름을 출력하고, data.frame함수로 데이터 프레임을 생성.
R Programming
%%R

print( data.frame( myvars=names(mydata) ) )

 

Results
    myvars
1 workshop
2   gender
3       q1
4       q2
5       q3
6       q4

 


2) 변수명에 의해 변수 선택하기(minus 부호는 사용 불가)

 

  • q1변수 선택.
R Programming
%%R

mydata["q1"]

 

Results
  q1
1  1
2  2
3  2
4  3
5  4
6  5
7  5
8  4

 

 

  • q 변수 선택
R Programming
%%R

mydata[ c("q1","q2","q3","q4") ]

 

Results
  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

 

 

  • subset함수는 colon 인식자를 이용하여서 쉽게 연속된 변수를 선택한다.
R Programming
%%R

print( subset(mydata, select=q1:q4) )

 

Results
  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

 

 

  • 변수 명의 리스트를 저장하여 이용.
R Programming
%%R

myQnames<-c("q1","q2","q3","q4")
print(myQnames) #변수명 출력.
print(mydata[myQnames])

 

Results
[1] "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

 

 

  • 이 프로그램 역시 변수 명의 리스트를 저장하는 방법이나,
  • 형태 1:4로부터 자동으로 생성된 연속적인 1,2,3,4를 문자 q에 붙여서 변수명을 생성한다.
R Programming
%%R

myQnames <-paste( "q", 1:4, sep="")
print(myQnames)         # 변수명 출력
print(mydata[myQnames]) # 선택된 변수 출력

 

Results
[1] "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

 

 

  • 인덱스에 의해 연속적인 변수 선택을 다시 설명.
  • 여기서 변수명에 의해 인덱스를 얻는 방법을 다시 반복.
R Programming
%%R

print(mydata[,3:6])

 

Results
  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

 

 

  • 단독 Number를 가진 numeric 벡터에 단독 인덱스 값을 저장.
R Programming
%%R

myA <- which( names(mydata)=="q1" )
print(myA) #숫자 3 출력.

myZ <- which( names(mydata)=="q4" )
print(myZ) #숫자 6을 출력.

print(mydata[ ,myA:myZ ]) # 변수 3에서 6번째 변수를 출력.

 

Results
[1] 3
[1] 6
  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

 


3) 로직에 의해 변수 선택

  • “==” 인식자는 벡터의 모든 멤버를 값과 비교하여서, TRUE/FALSE 값의 논리 벡터로 반환한다.
  • 벡터는 변수를 선택하기 위해 이용된다.
  • 벡터의 Length는 변수의 수와 일치하여서, 데이터 프레임 mydata에서 변수로써 저장될 수 없다.
  • 단지 워크스페이스에 저장된다.
  • 수동적으로 변수 q1을 가진 벡터를 생성.
  • as.logical함수는 1&0의 논리값을 TRUE & FALSE값으로 변경.
R Programming
%%R

myq <- as.logical( c(0,0,1,0,0,0) )
print(myq)  # TRUE/FALSE 값 출력.
print( mydata[ myq ] ) #변수 q1출력.

 

Results
[1] FALSE FALSE  TRUE FALSE FALSE FALSE
  q1
1  1
2  2
3  2
4  3
5  4
6  5
7  5
8  4

 

 

  • 자동적으로 같은 논리 벡터를 생성.
R Programming
%%R

myq <- names(mydata)=="q1"
print(myq)
print( mydata[ myq ] )

 

Results
[1] FALSE FALSE  TRUE FALSE FALSE FALSE
  q1
1  1
2  2
3  2
4  3
5  4
6  5
7  5
8  4

 

 

  • OR 인식자(“|”)를 이용하여서 q1에서 q4의 변수 선택,
  • 결과를 myqs에 논리 벡터를 저장.
R Programming
%%R

myqs <- names(mydata)=="q1" |
        names(mydata)=="q2" |
        names(mydata)=="q3" |
        names(mydata)=="q4"

print(myqs)
print( mydata[myqs] )

 

Results
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE
  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

 

 

  • %in% 연산자를 이용하여서 q1에서 q4의 변수 선택.
  • 위의 OR 연산자를 이용하는 것보다 간단.
R Programming
%%R

myqs <- names(mydata) %in% c("q1","q2","q3","q4")
print(myqs)
print( mydata[myqs] )

 

Results
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE
  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를 접근하기 위해서 attach함수를 이용하면,
  • 단독적으로 변수 q1을 조회할 수 있지만, 후에 data frame을 detach 해야 한다.
  • 데이터를 읽기 위해서는 편하지만, 권장하지 않는 방법.
R Programming
%%R

attach(mydata)
print(gender)
print(q1)
print( data.frame(q1,q2,q3,q4) )

 

Results
[1] "f" "f" "f" "f" "m" "m" "m" "m"
[1] 1 2 2 3 4 5 5 4
  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

 


4) 선택된 변수의 새 데이터 프레임 생성.

  • 새로운 데이터 프레임에 위에서 선택된 변수를 저장. 아래 4개의 결과는 서로 같다.
R Programming
%%R

myqs <- mydata[3:6]
myqs <- mydata[ c("q1","q2","q3","q4") ]
myqs <- data.frame(q1,q2,q3,q4)
myqs <- subset(mydata, select=q1:q4)
print(myqs)

 

Results
  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

 


5. R - Tidyverse

 

R Programming
%%R

library(tidyverse)
library(skimr)

mydata <- read_csv("C:/work/data/mydata.csv", 
  col_types = cols( id       = col_double(),
                    workshop = col_character(),
                    gender   = col_character(),
                    q1       = col_double(),
                    q2       = col_double(),
                    q3       = col_double(),
                    q4       = col_double()
  )
)

 

 

  • 데이터 기초 분석
R Programming
%%R

str(mydata)

 

Results
tibble [8 x 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ id      : num [1:8] 1 2 3 4 5 6 7 8
 $ workshop: chr [1:8] "1" "2" "1" "2" ...
 $ gender  : chr [1:8] "f" "f" "f" "f" ...
 $ q1      : num [1:8] 1 2 2 3 4 5 5 4
 $ q2      : num [1:8] 1 1 2 1 5 4 3 5
 $ q3      : num [1:8] 5 4 4 NA 2 5 4 5
 $ q4      : num [1:8] 1 1 3 3 4 5 4 5
 - attr(*, "spec")=
  .. cols(
  ..   id = col_double(),
  ..   workshop = col_character(),
  ..   gender = col_character(),
  ..   q1 = col_double(),
  ..   q2 = col_double(),
  ..   q3 = col_double(),
  ..   q4 = col_double()
  .. )

 

 

R Programming
%%R
skim(mydata)

 

Results
-- Data Summary ------------------------
                           Values
Name                       mydata
Number of rows             8     
Number of columns          7     
_______________________          
Column type frequency:           
  character                2     
  numeric                  5     
________________________         
Group variables            None  

– Variable type: character —————————————————-

A tibble: 2 x 8
skim_variable n_missing complete_rate min max empty n_unique whitespace


1 workshop 0 1 1 1 0 2 0
2 gender 0 1 1 1 0 2 0
– Variable type: numeric ——————————————————

A tibble: 5 x 11
skim_variable n_missing complete_rate mean sd p0 p25 p50 p75


1 id 0 1 4.5 2.45 1 2.75 4.5 6.25
2 q1 0 1 3.25 1.49 1 2 3.5 4.25
3 q2 0 1 2.75 1.75 1 1 2.5 4.25
4 q3 1 0.875 4.14 1.07 2 4 4 5
5 q4 0 1 3.25 1.58 1 2.5 3.5 4.25
p100 hist

1 8 <U+2587><U+2583><U+2587><U+2583><U+2587>
2 5 <U+2583><U+2587><U+2583><U+2587><U+2587>
3 5 <U+2587><U+2582><U+2582><U+2582><U+2585>
4 5 <U+2582><U+2581><U+2581><U+2587><U+2587>
5 5 <U+2587><U+2581><U+2587><U+2587><U+2587>

 

  • 모든 변수 선택하기.
R Programming
%%R
# 테이블에 포함된 모든 변수 선택하기.

mydata %>% select(everything())

 

Results
# A tibble: 8 x 7
     id workshop gender    q1    q2    q3    q4
            
1     1 1        f          1     1     5     1
2     2 2        f          2     1     4     1
3     3 1        f          2     2     4     3
4     4 2        f          3     1    NA     3
5     5 1        m          4     5     2     4
6     6 2        m          5     4     5     5
7     7 1        m          5     3     4     4
8     8 2        m          4     5     5     5

 


1) INDEX를 사용한 변수 선택

  • 3번째 변수(q1) 선택.
R Programming
%%R

mydata %>% select(4)

 

Results
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • 인덱스를 사용하여서 변수 q1, q2, q3, q4 선택하기 위한 방법.
R Programming
%%R
mydata %>% select(4:7)

 

Results
# A tibble: 8 x 4
     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

 

 

  • 첫 번째, 두 번째 변수를 제외.
R Programming
%%R

mydata %>% dplyr::select(-(1:3))

 

Results
# A tibble: 8 x 4
     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

 

  • '%in%' 함수는 이름의 전체 벡터를 비교하여 일치 여부를 반환한다.
R Programming
%%R

mydata %>% dplyr::select(q1,q2,q3,q4)

 

Results
# A tibble: 8 x 4
     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

 

 

R Programming
%%R

mydata %>% dplyr::select(q1:q4)

 

Results
# A tibble: 8 x 4
     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

 


2) 변수명에 의해 변수 선택하기

  • q1변수 선택.
R Programming
%%R

mydata %>% dplyr::select(q1)

 

Results
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • q 변수 선택
R Programming
mydata %>% dplyr::select(num_range("q",1:4))

 

 

  • 변수 명의 리스트를 저장하여 이용.
R Programming
%%R

myQnames = c("q1","q2","q3","q4")
print(myQnames) #변수명 출력.

mydata %>% dplyr::select(myQnames)

 

Results
[1] "q1" "q2" "q3" "q4"
Note: Using an external vector in selections is ambiguous.
i Use `all_of(myQnames)` instead of `myQnames` to silence this message.
i See .
This message is displayed once per session.
# A tibble: 8 x 4
     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

 

 

  • 인덱스에 의해 연속적인 변수 선택을 다시 설명.
  • 여기서 변수명에 의해 인덱스를 얻는 방법을 다시 반복.
R Programming
%%R
mydata %>% select(4:7)

 

Results
# A tibble: 8 x 4
     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

 


3) 로직에 의해 변수 선택

  • ==” 인식자는 벡터의 모든 멤버를 값과 비교하여서, TRUE/FALSE 값의 논리 벡터로 반환한다.
  • 벡터는 변수를 선택하기 위해 이용된다.
  • 벡터의 Length는 변수의 수와 일치하여서, 데이터 프레임 mydata에서 변수로써 저장될 수 없다.
  • 단지 워크스페이스에 저장된다.
  • 수동적으로 변수 q1을 가진 벡터를 생성.
  • as.logical함수는 1&0의 논리 값을 TRUE & FALSE값으로 변경.
R Programming
%%R

myq <- c(F,F,F,T,F,F,F)
myq1 <- which(myq == T)
myq1

 

Results
[1] 4

 

 

  • 인덱스를 사용하여서 변수 q1출력.
R Programming
%%R

mydata %>% 
  as_tibble() %>%
  select(myq1)

 

Results
Note: Using an external vector in selections is ambiguous.
i Use `all_of(myq1)` instead of `myq1` to silence this message.
i See .
This message is displayed once per session.
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • 수치형 변수 선택
R Programming
%%R

mydata %>% 
  as_tibble() %>%
  select(where(is.numeric))

 

Results
# A tibble: 8 x 5
     id    q1    q2    q3    q4
      
1     1     1     1     5     1
2     2     2     1     4     1
3     3     2     2     4     3
4     4     3     1    NA     3
5     5     4     5     2     4
6     6     5     4     5     5
7     7     5     3     4     4
8     8     4     5     5     5

 

 

R Programming
%%R

mydata %>% 
  as_tibble() %>%
  dplyr::select_if(myq)

 

Results
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • 참고 : subset 사용
R Programming
%%R
subset(mydata,select=myq)

 

Results
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • 자동적으로 같은 논리 벡터를 생성.
R Programming
%%R

myq <- names(mydata)=="q1"
print(myq)

# 인덱스를 사용하여서 변수 q1출력.
mydata %>% 
  as_tibble() %>%
  dplyr::select_if(myq)

 

Results
[1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
# A tibble: 8 x 1
     q1
  
1     1
2     2
3     2
4     3
5     4
6     5
7     5
8     4

 

 

  • OR 인식자(“|”)를 이용하여서 q1에서 q4의 변수 선택,
  • 결과를 myqs에 논리 벡터를 저장.
R Programming
%%R

myqs <- names(mydata)=="q1" |
        names(mydata)=="q2" |
        names(mydata)=="q3" |
        names(mydata)=="q4"

myqs

mydata %>% 
  as_tibble() %>%
  dplyr::select_if(myqs)

 

Results
# A tibble: 8 x 4
     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

 

 

  • %in% 연산자를 이용하여서 q1에서 q4의 변수 선택.
  • 위의 OR 연산자를 이용하는 것보다 간단.
R Programming
%%R
myqs <- names(mydata) %in% c("q1","q2","q3","q4")

print(myqs)

mydata %>% 
  as_tibble() %>%
  dplyr::select_if(myqs)

 

Results
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
# A tibble: 8 x 4
     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

 

 

  • 변수 선택을 위한 다양한 방법. 아래 4개 프로그램은 동일한 결과를 출력한다.
R Programming
%%R

mydata %>% 
  dplyr::select(num_range("q",1:4))

mydata %>% 
  select(4:7)

mydata %>% 
  select(q1,q2,q3,q4)

mydata %>% 
  select(contains("q"))

mydata %>% 
  select(starts_with("q"))

mydata %>% 
  select(num_range("q", 1:4))

mydata %>% 
  dplyr::select(matches("^q[[:digit:]]"))

 

Results
# A tibble: 8 x 4
     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

 


4) 선택된 변수의 새 데이터 프레임 생성.

 

R Programming
%%R
mydata1 <- mydata %>% 
  select(num_range("q", 1:4))

mydata1

 

Results
# A tibble: 8 x 4
     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

 


6. Python - Pandas

 

Python Programming
import pandas as pd
import numpy as np
import sweetviz as sv

mydata   = pd.read_csv("C:/work/data/mydata.csv",sep=",",
                       dtype={'id':object,'workshop':object,
                              'q1':int, 'q2':int, 'q3':float, 'q4':int},
                       na_values=['NaN'],skipinitialspace =True)

 

 

  • 모든 변수 선택하기.
Python Programming
mydata

 

Results
	id	workshop	gender	q1	q2	q3	q4
0	1	1		f	1	1	5.0	1
1	2	2		f	2	1	4.0	1
2	3	1		f	2	2	4.0	3
3	4	2		f	3	1	NaN	3
4	5	1		m	4	5	2.0	4
5	6	2		m	5	4	5.0	5
6	7	1		m	5	3	4.0	4
7	8	2		m	4	5	5.0	5

 


1) INDEX를 사용한 변수 선택

 

Python Programming
mydata[:]

 

Results
	id	workshop	gender	q1	q2	q3	q4
0	1	1		f	1	1	5.0	1
1	2	2		f	2	1	4.0	1
2	3	1		f	2	2	4.0	3
3	4	2		f	3	1	NaN	3
4	5	1		m	4	5	2.0	4
5	6	2		m	5	4	5.0	5
6	7	1		m	5	3	4.0	4
7	8	2		m	4	5	5.0	5

 

 

  • 3번째 변수(q1) 선택.
Python Programming
mydata.iloc[:,3:4]

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

  • 인덱스를 사용하여서 변수 q1, q2, q3, q4 선택하기 위한 방법.
Python Programming
mydata.iloc[:, [3,4,5,6] ]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 인덱스를 사용하여서 변수 q1, q2, q3, q4 선택하기 위한 방법.
Python Programming
mydata.iloc[:, [3,4,5,6] ]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata.iloc[:,3:7]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 첫 번째, 두 번째 변수를 제외.
Python Programming
mydata.drop(mydata.columns[[0 ,1, 2]], axis = 1)

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

  • 반복하여서 열의 범위를 이용한다면, Numeric 벡터에 전체 범위를 저장하면 유용.
Python Programming
mydata.iloc[:,3:7]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

  • '%in%' 함수는 이름의 전체 벡터를 비교하여 일치 여부를 반환한다.
Python Programming
mydata.loc[:, ['q1', 'q2', 'q3', 'q4']]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata.loc[ : , 'q1':'q4']

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 


2) 변수명에 의해 변수 선택하기

 

  • q1변수 선택.
Python Programming
mydata["q1"]

 

Results
0    1
1    2
2    2
3    3
4    4
5    5
6    5
7    4
Name: q1, dtype: int32

 

 

Python Programming
mydata.loc[:,['q1']]

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

Python Programming
mydata.loc[:,'q1']

 

Results
0    1
1    2
2    2
3    3
4    4
5    5
6    5
7    4
Name: q1, dtype: int32

 

 

  • q 변수 선택
Python Programming
mydata[["q1","q2","q3","q4" ]]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata.loc[:,["q1","q2","q3","q4" ]]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

  • 변수 명의 리스트를 저장하여 이용.
Python Programming
myQnames = ["q1","q2","q3","q4"]

print(myQnames) #변수명 출력.

mydata[myQnames]

 

Results
['q1', 'q2', 'q3', 'q4']
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

  • 이 프로그램 역시 변수 명의 리스트를 저장하는 방법이나,
  • 형태 1:4로부터 자동으로 생성된 연속적인 1,2,3,4를 문자 q에 붙여서 변수명을 생성한다.
Python Programming
myQnames = ["q" + str(i) for i in range(1,5)]

print(myQnames)  # 변수명 출력

mydata[myQnames] # 선택된 변수 출력

 

Results
['q1', 'q2', 'q3', 'q4']
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

  • 인덱스에 의해 연속적인 변수 선택을 다시 설명.
  • 여기서 변수명에 의해 인덱스를 얻는 방법을 다시 반복.
Python Programming
mydata.iloc[:,3:7]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

  • 단독 Number를 가진 numeric 벡터에 단독 인덱스 값을 저장.
Python Programming
mylist = list(mydata.columns)
myA = mylist.index("q1")
print(myA)
myZ = mylist.index("q4")
print(myZ)

mydata.iloc[:,myA:myZ + 1] # 변수 3에서 6번째 변수를 출력.

 

Results
3
6

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 


  • 변수의 인덱스를 검색한 후 해당 변수의 위치를 지정하여서 선택
Python Programming
mylist = mydata.columns
myA = [index for index, item in enumerate(mylist) if item == "q1"]
print(myA)
# 단독 Number를 가진 numeric 벡터에 단독 인덱스 값을 저장.
myZ = [index for index, item in enumerate(mylist) if item == "q4"]
print(myZ)

mydata.iloc[:,myA[0]:myZ[0] + 1] # 변수 3에서 6번째 변수를 출력.

 

Results
[3]
[6]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 


3) 로직에 의해 변수 선택

  • “==” 인식자는 벡터의 모든 멤버를 값과 비교하여서, TRUE/FALSE 값의 논리 벡터로 반환한다.
  • 벡터는 변수를 선택하기 위해 이용된다.
  • 벡터의 Length는 변수의 수와 일치하여서, 데이터 프레임 mydata에서 변수로써 저장될 수 없다.
  • 단지 워크스페이스에 저장된다.
  • 수동적으로 변수 q1을 가진 벡터를 생성.
  • as.logical함수는 1&0의 논리값을 TRUE & FALSE값으로 변경.
Python Programming
myq = [False,False,False,True,False,False,False]

#변수 q1출력.
mydata.loc[:, myq ]

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

  • 자동적으로 같은 논리 벡터를 생성.
Python Programming
myq = (mydata.columns=="q1")

print(myq)
mydata.loc[:,myq]

 

Results
[False False False  True False False False]

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

  • OR 인식자(“|”)를 이용하여서 q1에서 q4의 변수 선택,
  • 결과를 myqs에 논리 벡터를 저장.
Python Programming
myqs_1 = (mydata.columns == "q1") | (mydata.columns == "q2") | (mydata.columns == "q3") | (mydata.columns == "q4")
print(myqs_1)

mydata.loc[:,myqs_1]

 

Results
[False False False  True  True  True  True]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

  • isin 연산자를 이용하여서 q1에서 q4의 변수 선택.
  • 위의 OR 연산자를 이용하는 것보다 간단.
Python Programming
myqs = mydata.columns.isin (["q1","q2","q3","q4"]) 
print(myqs)

mydata.loc[:,myqs]

 

Results
[False False False  True  True  True  True]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

  • 새로운 데이터 프레임에 위에서 선택된 변수를 저장. 아래 4개의 결과는 서로 같다.

4) 선택된 변수로 구성된 새로운 데이터 프레임 생성.

 

Python Programming
myqs = mydata.iloc[:,3:7]
print(myqs)

myqs = mydata.loc[:,["q1","q2","q3","q4" ]]
print(myqs)

 

Results
   q1  q2   q3  q4
0   1   1  5.0   1
1   2   1  4.0   1
2   2   2  4.0   3
3   3   1  NaN   3
4   4   5  2.0   4
5   5   4  5.0   5
6   5   3  4.0   4
7   4   5  5.0   5

 


7. Python - dfply

 

Python Programming
import pandas as pd
from dfply import *

mydata   = pd.read_csv("C:/work/data/mydata.csv",sep=",",
                       dtype={'id':object,'workshop':object,
                              'q1':int, 'q2':int, 'q3':float, 'q4':int},
                        na_values=['NaN'],skipinitialspace =True)

 

  • 모든 변수 선택하기.
Python Programming
mydata

 

Results
	id	workshop	gender	q1	q2	q3	q4
0	1	1		f	1	1	5.0	1
1	2	2		f	2	1	4.0	1
2	3	1		f	2	2	4.0	3
3	4	2		f	3	1	NaN	3
4	5	1		m	4	5	2.0	4
5	6	2		m	5	4	5.0	5
6	7	1		m	5	3	4.0	4
7	8	2		m	4	5	5.0	5

 

 

 

  • 모든 변수 선택하기.
Python Programming
mydata >> select(everything())

 

Results
	id	workshop	gender	q1	q2	q3	q4
0	1	1		f	1	1	5.0	1
1	2	2		f	2	1	4.0	1
2	3	1		f	2	2	4.0	3
3	4	2		f	3	1	NaN	3
4	5	1		m	4	5	2.0	4
5	6	2		m	5	4	5.0	5
6	7	1		m	5	3	4.0	4
7	8	2		m	4	5	5.0	5

 

 

1) INDEX를 사용한 변수 선택

  • 모든 변수를 선택하여 출력.
Python Programming
mydata >> select(everything())

 

Results
	id	workshop	gender	q1	q2	q3	q4
0	1	1		f	1	1	5.0	1
1	2	2		f	2	1	4.0	1
2	3	1		f	2	2	4.0	3
3	4	2		f	3	1	NaN	3
4	5	1		m	4	5	2.0	4
5	6	2		m	5	4	5.0	5
6	7	1		m	5	3	4.0	4
7	8	2		m	4	5	5.0	5

 

 

  • 3번째 변수(q1) 선택.
Python Programming
mydata >> select(3)

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

 

  • 인덱스를 사용하여서 변수 q1, q2, q3, q4 선택하기 위한 방법.
Python Programming
mydata >> select(columns_between(3, 7, inclusive=True))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 첫 번째, 두 번째 변수를 제외.
Python Programming
mydata >> select(~columns_between(0, 2, inclusive=True))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • '%in%' 함수는 이름의 전체 벡터를 비교하여 일치 여부를 반환한다.
Python Programming
mydata >> select('q1','q2','q3','q4')

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(range(3,7))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(columns_between(3, 7, inclusive=True)) 

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 


 

2) 변수명에 의해 변수 선택하기

  • q1변수 선택.
Python Programming
mydata >> select("q1")

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

 

  • q 변수 선택
Python Programming
mydata >> select(num_range("q", range(1,5)))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 변수명의 리스트를 저장하여 이용.
Python Programming
myQnames = ["q1","q2","q3","q4"]
print(myQnames) #변수명 출력.

mydata >> select(myQnames)

 

Results
['q1', 'q2', 'q3', 'q4']

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 인덱스에 의해 연속적인 변수 선택을 다시 설명.
  • 여기서 변수명에 의해 인덱스를 얻는 방법을 다시 반복.
Python Programming
mydata >> select(columns_between(3, 7, inclusive=True)) 

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 


3) 로직에 의해 변수 선택

  • “==” 인식자는 벡터의 모든 멤버를 값과 비교하여서, TRUE/FALSE 값의 논리 벡터로 반환한다.
  • 벡터는 변수를 선택하기 위해 이용된다.
  • 벡터의 Length는 변수의 수와 일치하여서, 데이터 프레임 mydata에서 변수로써 저장될 수 없다.
  • 단지 워크스페이스에 저장된다.
  • [참고] which 함수(위치검색 함수)
Python Programming
[index for index, item in enumerate([True,False,True,True,True,False]) if item == True]

 

Results
[0, 2, 3, 4]

 

 

  • 수동적으로 변수 q1을 가진 벡터를 생성.
  • as.logical함수는 1&0의 논리값을 TRUE & FALSE값으로 변경.
Python Programming
myq = [False,False,False,True,False,False,False]
myq1 = [index for index, item in enumerate(myq) if item == True]
myq1

 

Results
[3]

 

 

  • 인덱스를 사용하여서 변수 q1출력.
Python Programming
mydata >> select(myq1)

 

Results
	q1
0	1
1	2
2	2
3	3
4	4
5	5
6	5
7	4

 

 

  • [참고] 수치형 변수명 리스트 생성
Python Programming
print(mydata._get_numeric_data().columns.tolist())

print(mydata.select_dtypes(include=np.number).columns.tolist())

mydata.select_dtypes(exclude='object').columns.tolist()

 

Results
['q1', 'q2', 'q3', 'q4']

 

 

  • 수치형 변수 선택
Python Programming
mydata >> select(mydata.select_dtypes(include=np.number).columns.tolist())

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • select_if 사용.
Python Programming
def num_variable(df,serieses):
    result = []

    for series in serieses:
        if df[series].dtypes in (["int32","float64"]):
            result.append(series)

    return result

mydata >> select(num_variable(mydata,mydata.columns.tolist()))

 

Results
['q1', 'q2', 'q3', 'q4']

 

 

  • 자동적으로 같은 논리 벡터를 생성.
Python Programming
myq = (mydata.columns == "q1")
print(myq)

 

Results
[False False False  True False False False]

 

 

  • OR 인식자(“|”)를 이용하여서 q1에서 q4의 변수 선택,
  • 결과를 myqs에 논리 벡터를 저장.
Python Programming
myqs_1 = (mydata.columns == "q1") | (mydata.columns == "q2") | (mydata.columns == "q3") | (mydata.columns == "q4")
print(myqs_1)

myq1 = [index for index, item in enumerate(myqs_1) if item == True]
print(myq1)

mydata >> select(myq1)

 

Results
[False False False  True  True  True  True]
[3, 4, 5, 6]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • %in% 연산자를 이용하여서 q1에서 q4의 변수 선택.
  • 위의 OR 연산자를 이용하는 것보다 간단.
  • isin 연산자를 이용하여서 q1에서 q4의 변수 선택.
  • 위의 OR 연산자를 이용하는 것보다 간단.
Python Programming
myqs_2 = mydata.columns.isin (["q1","q2","q3","q4"]) 
print(myqs_2)

myqs_3 = [index for index, item in enumerate(myqs_2) if item == True]
print(myqs_3)

mydata >> select(myqs_3)

 

Results
[False False False  True  True  True  True]
[3, 4, 5, 6]

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 

  • 변수 선택을 위한 다양한 방법. 아래 4개 프로그램은 동일한 결과를 출력한다.
Python Programming
mydata >> select(num_range("q", range(1,5)))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(columns_between(3, 7, inclusive=True)) 

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select('q1','q2','q3','q4')

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(contains("q"))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(starts_with("q"))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

Python Programming
mydata >> select(matches("^q[\d]"))

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

4) 선택된 변수의 새 데이터 프레임 생성.

 

Python Programming
mydata1 = mydata >> select(num_range("q", range(1,5)))

mydata1

 

Results
	q1	q2	q3	q4
0	1	1	5.0	1
1	2	1	4.0	1
2	2	2	4.0	3
3	3	1	NaN	3
4	4	5	2.0	4
5	5	4	5.0	5
6	5	3	4.0	4
7	4	5	5.0	5

 

 

 


 

통계프로그램 비교 목록(Proc sql, SAS, SPSS, R 프로그래밍, R Tidyverse, Python Pandas, Python Dfply)
[Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table] 오라클 함수와 R & Python 비교 사전 목록 링크
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE]
SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크

 

반응형

댓글