일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- repeated measures ANOVA
- 신라
- 후한서
- 히스토그램
- 풍백
- 한서지리지
- 기자조선
- 기자
- 태그를 입력해 주세요.
- 고구려
- 통계학
- linear regression
- post hoc test
- 패수
- 우분투
- t test
- 유주
- 창평
- categorical variable
- 단군
- 통계
- 낙랑군
- 지리지
- 독사방여기요
- ANOVA
- 선형회귀분석
- Histogram
- spss
- R
- 한서
- Today
- Total
獨斷論
통계 R 사용설명서 8 - data frame의 변수명 변경 본문
data frame에 각 열마다 변수병이 들어가는데 요놈이 맘에 안들어 바꾸고자 할때 어떻게 해야할까?
우선 data frame을 만들어보자.
이건 앞서 통계 R 사용설명서 7 - 변수생성과 recoding에서 만들었던건데 mydat라는 변수에 데이터를 아직도 가지고 있다면 아래 script를 실행할 필요가 없다.
> id <- c(1, 2, 3, 4, 5)
> date <- c("May/03/2016", "Feb/12/2016", "Jul/21/2016", "Aug/18/2016", "Dec/01/2016")
> country <- c("Korea", "Japan", "China", "Korea", "Mongol")
> gender <- c("M", "F", "F", "F", "M")
> age <- c(20, 21, 53, 82, 25)
> q1 <- c(10, 3, 5, 8, 4)
> q2 <- c(7, NA, 4, 5, 9)
> q3 <- c(9, NA, 8, 9, 9)
> q4 <- c(8, 6, 10, 4, 5)
> q5 <- c(3, 6, 8, 3, 5)
> mydat <- data.frame(id, date, country, gender, age, q1, q2, q3, q4,
+ stringAsFactors = FALSE)
>
> mydat <- within(mydat, {
+ agecat <- NA
+ agecat[age <= 25] <- "young"
+ agecat[age > 25 & age <= 60] <- "middle"
+ agecat[age > 60] <- "elder" })
> mydat
id date country gender age q1 q2 q3 q4 stringAsFactors agecat
1 1 May/03/2016 Korea M 20 10 7 9 8 FALSE young
2 2 Feb/12/2016 Japan F 21 3 NA NA 6 FALSE young
3 3 Jul/21/2016 China F 53 5 4 8 10 FALSE middle
4 4 Aug/18/2016 Korea F 82 8 5 9 4 FALSE elder
5 5 Dec/01/2016 Mongol M 25 4 9 9 5 FALSE young
만약 mydat안에 있는 변수인 agecat가 맘에 안들어서 age_category라고 바꾸고자한다면 어떻게 해야할까?
가장 간단한 방법은 R에서 제공하는 대화창을 이용하는 것이다.
대화창 이용하여 변수명 변경
fix( ) 명령어를 치면 쉽다.
> fix(mydat)
R console에서 위와 같이 입력하면 아래와 같은 창이 하나 뜬다.
맨 오른쪽에 agecat라는 변수명을 한 번만 클릭한다. 만약 agecat가 보이지 않는다면 창을 좀더 크게 하면 보일것이다.
변수명에 마우스를 대고 한 번 클릭하면 아래와 같은 창이 또 하나 뜨는데
여기에 age_category라고 바꾼후에 엔터를 친다.
그리고는 Data Editor를 닫는다.
다시 R console로 넘어가게 되는데 여기서 mydat를 확인하면 된다.
> mydat
id date country gender age q1 q2 q3 q4 stringAsFactors age_category
1 1 May/03/2016 Korea M 20 10 7 9 8 FALSE young
2 2 Feb/12/2016 Japan F 21 3 NA NA 6 FALSE young
3 3 Jul/21/2016 China F 53 5 4 8 10 FALSE middle
4 4 Aug/18/2016 Korea F 82 8 5 9 4 FALSE elder
5 5 Dec/01/2016 Mongol M 25 4 9 9 5 FALSE young
> # 또는 아래와 같이 확인할수도 있다.
> names(mydat)
[1] "id" "date" "country" "gender"
[5] "age" "q1" "q2" "q3"
[9] "q4" "stringAsFactors" "age_category"
Script로만 변수명 변경
names()라는 명령어는 data frame의 변수를 가져오게 된다는 것을 바로 위의 script에서 보았다.
즉 names(mydat)는 1x11의 벡터인데 각각의 원소를 문자열로 갖는다. 따라서 names(mydat)[11]은 age_category가 된다. names(mydat)[11]의 값만 바꾸면 변수명이 바뀌게 된다.
> names(mydat)[11] <- "age_cat"
> mydat
id date country gender age q1 q2 q3 q4 stringAsFactors age_cat
1 1 May/03/2016 Korea M 20 10 7 9 8 FALSE young
2 2 Feb/12/2016 Japan F 21 3 NA NA 6 FALSE young
3 3 Jul/21/2016 China F 53 5 4 8 10 FALSE middle
4 4 Aug/18/2016 Korea F 82 8 5 9 4 FALSE elder
5 5 Dec/01/2016 Mongol M 25 4 9 9 5 FALSE young
만약 한꺼번에 여러개의 변수명을 바꾸고자 한다면 아래와 같이 하면 된다.
> names(mydat)[c(1, 11)] <- c("subj", "agecat")
> mydat
subj date country gender age q1 q2 q3 q4 stringAsFactors agecat
1 1 May/03/2016 Korea M 20 10 7 9 8 FALSE young
2 2 Feb/12/2016 Japan F 21 3 NA NA 6 FALSE young
3 3 Jul/21/2016 China F 53 5 4 8 10 FALSE middle
4 4 Aug/18/2016 Korea F 82 8 5 9 4 FALSE elder
5 5 Dec/01/2016 Mongol M 25 4 9 9 5 FALSE young
id를 subj로 바꾸었고 age_category를 다시 agecat으로 돌려놓았다.