포스팅 목차
[데이터 관리] 5. 변수명 변경(Rename)
1. Proc SQL
- 변수명 변경을 위한 SQL(PROC SQL)프로그램.
- 일반 오라클에서는 상단의 별칭(as)을 통한 변수명을 새롭게 지정하여서 변경할 수 있다.
SAS Programming |
proc sql;
create table withmooc as
select id,
workshop,
gender,
q1 as x1,
q2 as x2,
q3 as x3,
q4 as x4
from BACK.mydata;
quit;
proc sql;
create table withmooc as
select *
from BACK.mydata(rename=(q1-q4=x1-x4));
quit;
proc sql;
create table withmooc(rename=(q1-q4=x1-x4)) as
select *
from BACK.mydata;
quit;
proc sql;
create table withmooc as
select *
from BACK.mydata(rename=(q1=x1 q2=x2 q3=x3 q4=x4));
quit;
proc print;run;
2. SAS Programming
- Rename 함수를 사용하여 변수명 변경;
SAS Programming |
DATA withmooc;
set BACK.mydata;
RENAME q1=x1 q2=x2 q3=x3 q4=x4;
RUN;
# Rename 함수를 사용하여 동시에 변수명 변경;
DATA withmooc;
set BACK.mydata;
RENAME q1-q4=x1-x4;
RUN;
# 출력 데이터에서 데이터명 변경;
DATA withmooc(rename=(q1-q4=x1-x4));
set BACK.mydata;
RUN;
# 입력 데이터에서 데이터명 변경;
DATA withmooc;
set BACK.mydata(rename=(q1-q4=x1-x4));
RUN;
proc print;run;
Results |
id workshop gender x1 x2 x3 x4
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
3. SPSS
SPSS Programming |
GET FILE='C:\mydata.sav'.
RENAME VARIABLES (Q1=X1)(Q2=X2)(Q3=X3)(Q4=X4).
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 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 = 4):
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 Program for Renaming Variables.
- 데이터 에디터 화면을 이용한 변수명 변경.
- 스프레트 쉬트에서 변수명을 클릭 후 변경 후에 쉬트를 닫는다.
R Programming |
%%R
fix(withmooc)
withmooc
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
Rename함수 사용.
R Programming |
%%R
withmooc = mydata
- 이 방법은 이해하기 쉬우나, 실제 구현 방법을 이해하는데 돕지 않는다.
- rename함수를 적용하기 위하여 Reshape 라이브러리를 다운로드.
R Programming |
%%R
# install.packages("reshape")
library(reshape)
withmooc <- rename(withmooc, c(q1="x1")) #Note the new name is one in quotes.
withmooc <- rename(withmooc, c(q2="x2"))
withmooc <- rename(withmooc, c(q3="x3"))
withmooc <- rename(withmooc, c(q4="x4"))
withmooc
Results |
workshop gender x1 x2 x3 x4
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
- 패키지 이용 없이 변경하는 간단한 방법.
- names함수를 사용하여서 변수명 순서대로 변수명을 나열하는 방법.
R Programming |
%%R
withmooc = mydata
names(withmooc) <- c("group", "gender", "x1", "x2", "x3", "x4")
withmooc
Results |
group gender x1 x2 x3 x4
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 = 4):
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
R[write to console]: The following objects are masked from withmooc (pos = 6):
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
Select 구문을 사용하여서 변수명 변경
R Programming |
%%R
withmooc %>%
select(x1 = q1,x2 = q2,x3 = q3, x4 = q4)
Results |
x1 x2 x3 x4
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
Rename 구문을 사용하여 변수명 변경
R Programming |
%%R
library(tidyverse)
R Programming |
%%R
withmooc = mydata
withmooc %>%
dplyr::rename(x1 = q1,x2 = q2,x3 = q3, x4 = q4)
Results |
workshop gender x1 x2 x3 x4
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
- 변수명에서 문자 q를 문자 x로 변경
R Programming |
%%R
withmooc %>%
dplyr::rename_all(funs(sub('q', 'x' , .)))
Results |
workshop gender x1 x2 x3 x4
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
- 변수명에서 문자 q를 문자 x로 변경
R Programming |
%%R
withmooc %>%
dplyr::rename_with(~ gsub("q", "x", .x, fixed = TRUE))
Results |
workshop gender x1 x2 x3 x4
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
withmooc %>%
rename_at(vars(starts_with('q')), funs(sub('q', 'x' , .)))
Results |
workshop gender x1 x2 x3 x4
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
withmooc %>%
rename_at(vars(starts_with("q")), funs(str_replace(., "q", "x")))
Results |
workshop gender x1 x2 x3 x4
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
withmooc %>%
rename_at(vars(starts_with('q')), funs(paste0('back_', .)))
Results |
workshop gender back_q1 back_q2 back_q3 back_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
- [참고] 지정한(q) 변수에 인덱스 번호 추가하여 변수명 변경.
R Programming |
%%R
withmooc %>%
rename_all( ~ str_replace(., "q", paste0("var", seq_along(.),'_')))
Results |
workshop gender var3_1 var4_2 var5_3 var6_4
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
from IPython.display import display # DataFrame()을 HTML로 출력
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
Rename함수 사용.
- 이 방법은 이해하기 쉬우나, 실제 구현 방법을 이해하는데 돕지 않는다.
- rename함수를 적용하기 위하여 Reshape 라이브러리를 다운로드.
Python Programming |
withmooc= mydata.copy()
withmooc
withmooc = withmooc.rename(index=str, columns={"q1": "x1","q2": "x2","q3": "x3","q4": "x4"})
withmooc
Results |
id workshop gender x1 x2 x3 x4
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
- 패키지 이용없이 변경하는 간단한 방법.
names함수를 사용하여서 나열하기 위한 순서대로 변수명을 나열하는 방법.
Python Programming |
withmooc= mydata.copy()
withmooc
withmooc.columns = ['id','workshop','gender','x1','x2','x3','x4']
withmooc
Results |
id workshop gender x1 x2 x3 x4
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
- q로 시작하는 변수명을 일괄적으로 x로 변경
Python Programming |
withmooc= mydata.copy()
withmooc
withmooc.columns = withmooc.columns.str.replace('q','x')
withmooc
Results |
id workshop gender x1 x2 x3 x4
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
- q로 시작하는 변수명을 일괄적으로 x로 변경
Python Programming |
withmooc= mydata.copy()
withmooc
# q로 시작하는 변수명에서 문자 "q"를 제거
withmooc.columns = withmooc.columns.str.lstrip('q')
display(withmooc)
# 변수명 앞에 일괄적으로 문자 추가
withmooc = withmooc.add_prefix('x_')
display(withmooc)
# 변수명 뒤에 일괄적으로 문자 추가
withmooc = withmooc.add_suffix('_y')
withmooc
Results |
id workshop gender 1 2 3 4
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
Results |
x_id x_workshop x_gender x_1 x_2 x_3 x_4
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
Results |
x_id_y x_workshop_y x_gender_y x_1_y x_2_y x_3_y x_4_y
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 |
withmooc= mydata.copy()
withmooc
# q로 시작하는 변수명에서 문자 "q"를 제거
withmooc.columns = withmooc.columns.str.lstrip('q')
display(withmooc)
# Lambda 함수를 사용하여서 일괄적으로 접두어 'x_' 와 접미어 '_y' 를 추가하기.
withmooc.rename(columns = lambda x: "x_" + x + "_y", inplace = True)
withmooc
Results |
id workshop gender 1 2 3 4
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
Results |
x_id_y x_workshop_y x_gender_y x_1_y x_2_y x_3_y x_4_y
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
- 행 인덱스 번호를 이용하는 방법.
- 먼저 names함수를 이용하여 변수명을 추출.
Python Programming |
withmooc= mydata.copy()
withmooc
mynames = list(withmooc.columns)
print(mynames)
mynames[3] = "T1"
mynames[4] = "T2"
mynames[5] = "T3"
mynames[6] = "T4"
withmooc.columns = mynames
withmooc
Results |
['id', 'workshop', 'gender', 'q1', 'q2', 'q3', 'q4']
Results |
id workshop gender T1 T2 T3 T4
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
- 각 변수의 순서. 즉 V1은 column [2]
Python Programming |
withmooc= mydata.copy()
withmooc
mynames = list(withmooc.columns)
print(mynames)
mynames[mynames.index("q1")] = 'x1'
mynames[mynames.index("q2")] = 'x2'
mynames[mynames.index("q3")] = 'x3'
mynames[mynames.index("q4")] = 'x4'
withmooc.columns = mynames
withmooc
Results |
['id', 'workshop', 'gender', 'q1', 'q2', 'q3', 'q4']
Results |
id workshop gender x1 x2 x3 x4
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 |
withmooc= mydata.copy()
withmooc
# 기존 변수명을 대체할 변수명 생성.
myXs = ["x" + str(x + 1) for x in range(4)]
print(myXs)
mylist = list(withmooc.columns)
myA = mylist.index("q1")
print(myA)
myZ = mylist.index("q4")
print(myZ)
withmooc.columns = list(withmooc.iloc[:,:myA].columns) + myXs
withmooc
Results |
['x1', 'x2', 'x3', 'x4']
3
6
Results |
id workshop gender x1 x2 x3 x4
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
- Rename함수 사용.
- 이 방법은 이해하기 쉬우나, 실제 구현 방법을 이해하는데 돕지 않는다.
- rename함수를 적용하기 위하여 Reshape 라이브러리를 다운로드.
Python Programming |
withmooc >> rename(x1 = X.q1,x2 = X.q2,x3 = X.q3, x4 = X.q4)
Results |
id workshop gender x1 x2 x3 x4
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 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
반응형
'통계프로그램 비교 시리즈 > 데이터 전처리 비교' 카테고리의 다른 글
[데이터 관리] 7. 변수 Keeping과 Dropping (0) | 2022.01.10 |
---|---|
[데이터 관리] 6. 관측값 포맷팅 & 관측값 일괄 변경하기 (0) | 2022.01.10 |
통계프로그램 비교 시리즈 – [데이터 관리] 4. 다중 조건에 의한 변환 (0) | 2022.01.10 |
통계프로그램 비교 시리즈 – [데이터 관리] 3. 결측값 할당을 위한 조건 변환 (0) | 2022.01.10 |
통계프로그램 비교 시리즈 – [데이터 관리] 2. 조건문에 의한 변환 (0) | 2022.01.07 |
댓글