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

[데이터 관리] 9. Stacking & Concatenating & Adding Data Sets

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

포스팅 목차

    [데이터 관리] 9. Stacking & Concatenating & Adding Data Sets (Union / 상하 결합)

     


    1. Proc SQL

    • Stacking(Unoin) 작업을 위하여 실습 데이터 생성
    SAS Programming
    proc sql;
      create table males as
        select *
        from   BACK.mydata
        where  gender='m';
    
      select * from males;
    quit;

     

    Results
    id  workshop  gender          q1        q2        q3        q4
    --------------------------------------------------------------
     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

     

    • Stacking(Unoin) 작업을 위하여 실습 데이터 생성
    SAS Programming
    proc sql;
      create table females as
        select *
        from   BACK.mydata
        where  gender='f';
    
      select * from females;
    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

     


    • UNION을 이용하여 두 개의 데이터 세트 세로 결합;
    SAS Programming
    proc sql;
      create table both as
        select *
        from   males
    
        UNION
    
        select *
        from   females;
    
      select * from both;
    
    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

     

     


    2. SAS Programming

    • Stacking / Concatenating / Adding Data Sets 위한 SAS 프로그램.
    SAS Programming
    DATA males;  
    
     SET BACK.mydata;
    
         WHERE gender='m';
    
    RUN;

     

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

     


     

    SAS Programming
    DATA females;
    
     SET BACK.mydata;
    
         WHERE gender='f';
    
    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

     


    • 분리한 데이터 세트 세로 합치기;
    SAS Programming
    DATA both;
     SET males females;
    RUN;
    
    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

     

     


    3. SPSS

    • Stacking / Concatenating / Adding Data Sets 위한 SPSS 프로그램.
    SPSS Programming
    GET FILE='C:\mydata.sav'.
    SELECT IF(gender = "f").
    SAVE OUTFILE='C:\females.sav'.
    
    EXECUTE .
    
    GET FILE='C:\mydata.sav'.
    SELECT IF(gender = "m").
    SAVE OUTFILE='C:\males.sav'.
    
    EXECUTE .
    
    GET FILE='C:\females.sav'.
    ADD FILES /FILE=*
     /FILE='C:\males.sav'.
    
    EXECUTE.

     

     


    4. R Programming (R-PROJECT)

    • Stacking / Concatenating / Adding Data Sets 위한 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 Programming
    %%R
    
    library(tidyverse)
    library(psych)
    load(file="C:/work/data/mydata.Rdata")
    
    withmooc = mydata
    
    attach(withmooc) # mydata를 기본 데이터 세트로 지정.
    
    withmooc

     

    Results
    R[write to console]: The following objects are masked from withmooc (pos = 3):
    
        gender, q1, q2, q3, q4, workshop
    
    
    
    
      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

     


    • 데이터 프레임에서 남성을 선택하여 데이터 프레임 생성.
    R Programming
    %%R
    
    males <- mydata[gender=="m", ]
    
    males

     

    Results
      workshop gender q1 q2 q3 q4
    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

     


    • 데이터 프레임에서 여성을 선택하여 데이터 프레임 생성.
    R Programming
    %%R
    
    females <- mydata[gender=="f", ]
    
    females

     

    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

     


    • Rbind 함수를 이용하여 두 개의 데이터를 세로 연결.
    R Programming
    %%R
    
    both<-rbind(females,males)
    
    both

     

    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

     

     


    5. R - Tidyverse

     

    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 Programming
    %%R
    
    library(tidyverse)
    load(file="C:/work/data/mydata.Rdata")
    
    withmooc = mydata
    
    attach(withmooc) # mydata를 기본 데이터 세트로 지정.
    
    withmooc

     

    Results
    R[write to console]: The following objects are masked from withmooc (pos = 3):
    
        gender, q1, q2, q3, q4, workshop
    
    
    R[write to console]: The following objects are masked from withmooc (pos = 5):
    
        gender, q1, q2, q3, q4, workshop
    
    
    
    
      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

     

    • Stacking / Concatenating / Adding Data Sets 위한 R-PROJECT 프로그램.
    • 데이터 프레임에서 남성을 선택하여 데이터 프레임 생성.
    R Programming
    %%R
    
    males <- withmooc %>%
      filter(gender == "m")
    
    males

     

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

     


    • 데이터 프레임에서 여성을 선택하여 데이터 프레임 생성.
    R Programming
    %%R
    
    females <- withmooc %>%
      filter(gender == "f") 
    
    females

     

    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

     


    R Programming
    %%R
    
    females %>%
      bind_rows(males)

     

    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

     

     


    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)
    
    withmooc= mydata.copy()
    
    withmooc

     

    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
    males = withmooc[withmooc['gender'] == 'm']
    males

     

    Results
    	id	workshop	gender	q1	q2	q3	q4
    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
    females = withmooc.loc[withmooc['gender'] == 'f', :]
    females

     

    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

     


    • Rbind 함수를 이용하여 두 개의 데이터를 세로 연결.
    Python Programming
    both = pd.concat([females, males])
    both

     

    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
     

     


    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)
    
    withmooc= mydata.copy()
    
    # 모든 변수 선택하기.
    withmooc

     

    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

     


    • Stacking / Concatenating / Adding Data Sets 위한 R-PROJECT 프로그램.
    • 데이터 프레임에서 남성을 선택하여 데이터 프레임 생성.
    Python Programming
    males = mydata >> row_slice(X.gender == "m")
    
    males

     

    Results
    	id	workshop	gender	q1	q2	q3	q4
    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
    females = mydata >> row_slice(X.gender == "f")
    
    females

     

    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

     


     

    Python Programming
     
    females >> bind_rows(males)

     

    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
     


     

    통계프로그램 비교 목록(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 예제로 만나는 테이블 데이터 처리 방법 리스트 링크
    반응형

    댓글