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

통계프로그램 비교 시리즈 – 4. 프로그램 내에서 TEXT 데이터 읽기

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

4. 프로그램 내에서 TEXT 데이터 읽기

 


1. Proc SQL

  • Insert inot를 사용하여서 직접 값을 지정하여 읽기.
  • 변수명, 변수 타입을 지정후에, 각 해당값을 테이블에 넣는다.
SAS Programming
proc sql;
  create table mydata
         ( id       char(1),
           workshop char(1),
           gender   char(1),
           q1       num,
           q2       num,
           q3       num,
           q4       num);
  insert into mydata
         values('1','1','f',1,1,5,1)
         values('2','2','f',2,1,4,1)
         values('3','1','f',2,2,4,3)
         values('4','2','f',3,1,.,3)
         values('5','1','m',4,5,2,4)
         values('6','2','m',5,4,5,5)
         values('7','2','m',4,5,5,5)
         values('8','2','m',4,5,5,5);
  select * from 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   2         m              4         5         5         5
8   2         m              4         5         5         5

 

 


2. SAS Programming

  • SAS 프로그램 상에서 데이터 읽기
SAS Programming
* 첫번째의 변수 관측치는 제외하고, 2번째 관측값부터 읽기.;

DATA BACK.mydata;
INFILE DATALINES DELIMITER = ','
  MISSOVER DSD firstobs=2 ;
INPUT id workshop gender $ q1 q2 q3 q4;
DATALINES;
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
;

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

 

SPSS Programming
DATA LIST / id 2 workshop 4 gender 6 (A) 
 q1 8  q2 10  q3 12  q4 14.
BEGIN DATA.
 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
END DATA.
LIST.
SAVE OUTFILE='c:\mydata.sav'.
EXECUTE.

 


4. R Programming

 

  • R 프로그램에서 데이터 저장하기
R Programming
from rpy2.robjects import r
%load_ext rpy2.ipython

 

Results
C:\Users\BACK\anaconda3\lib\site-packages\rpy2\robjects\packages.py:365: UserWarning: The symbol 'quartz' is not in this R namespace/package.
  warnings.warn(

 

 

R Programming
%%R
# 하나의 긴 텍스트 문자열로 데이터 저장.

mystring<-("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")

# 파일 위치 대신에 textConnection 함수를 이용하여서 프로그램 내의 mystring(긴 문자 벡터)을 텍스트 파일로 읽기.

mydata<-read.table(textConnection(mystring),
                    header=TRUE,sep=",",row.names="id")

print(mydata)

# 디스크에 파일을 써서 저장하기.
# save.image(file="c:\\mydata.Rdata")

 

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
%%R
library(tidyverse)

mydata <- data.frame(id       = c('1','2','3','4','5'),
                     workshop = c('1', '2','1', '2','1'),
                     gender   = c('f', 'f','f','f','m'),
                     q1       = c(1,2,2,3,4),
                     q2       = c(1,1,2,1,5),
                     q3       = c(5,4,4,NA,2),
                     q4       = c(1,1,3,3,4) )

print(mydata)

# readr 패키지 - CSV 파일로 저장하기.
write.csv(mydata, file = "C:/WORK/test.csv", row.names=FALSE)

 

Results
  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. Python - Pandas

 

Python Programming
import pandas as pd

my_dict = {"id": ['1','2','3','4','5'], 
           "workshop": ['1', '2','1', '2','1'], 
           "gender": ['f', 'f','f','f','m'],
           "q1": ['1', '2','2','3','4'],
           "q2": ['1', '1','2','1','5'],
           "q3": ['5', '4','4','','2'],
           "q4": ['1', '1','3','3','4']
          }
mydata = pd.DataFrame(my_dict)
mydata

 

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

 

Python Programming
# CSV 파일로 저장하기.
mydata.to_csv("c:/work/mydata_pd.csv", index=False)

 

Python Programming
# pickle로 데이터(객체) 저장 및 불러오기
mydata.to_pickle("c:/work/mydata_df.pkl")
pkl_read = pd.read_pickle("c:/work/mydata_df.pkl")

pkl_read

 

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

 

Python Programming
import sqlite3

# SQLite3 DB로 저장하기
con = sqlite3.connect("c:/work/sql_data.db")
mydata.to_sql("BTable", con, if_exists="append", index=False)
con.close()

# SQLite3 DB 불러오기
con = sqlite3.connect("c:/work/sql_data.db")
DB_mydata = pd.read_sql("SELECT * FROM BTable", con)
con.close()

DB_mydata

 

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

 


7. Python - dfply

 


 


 

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

댓글