오랜만에 R을 써서 그런지 많은 함수와.. 사용법을 잊어버렸다.. 이것은 파이썬 덕분....... 따라서 이를 정리해본다.
1. 데이터 불러오기
먼저 readr 패키지로 csv 파일을 불러오자.
library(readr)
root_path <- 'C:\\Users\\LG\\Desktop\\data_set'
df <- read_csv(file.path(root_path, 'word.csv'))
출력 결과이다.
Parsed with column specification:
cols(
id = col_double(),
sex = col_double(),
bday = col_date(format = ""),
overall = col_double(),
supervisor = col_double(),
conditions = col_double(),
colleagues = col_double(),
workplace = col_double(),
tasks = col_double()
)
> df
# A tibble: 50 x 9
id sex bday overall supervisor conditions colleagues workplace tasks
<dbl> <dbl> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1999-08-04 65 47 53 74 49 54
2 2 0 2000-01-16 58 79 73 72 41 46
3 3 1 1999-07-16 0 32 10 25 9 30
4 4 0 1999-09-03 80 53 71 67 52 37
5 5 1 1999-05-22 56 52 21 31 50 46
6 6 0 1999-10-19 93 92 45 80 100 77
7 7 1 2000-02-05 45 57 44 55 19 47
8 8 1 1998-08-01 61 63 77 81 63 49
9 9 0 2000-01-09 68 63 49 76 39 99
10 10 0 1999-09-19 71 66 69 81 53 62
# ... with 40 more rows
2. 컬럼 추가
성별이 0일 경우 여성, 성별이 1일 경우 남성으로 나타낸 컬럼을 추가해본다.
먼저 dplyr 패키지를 설치한다.
install.packages("dplyr")
이제 데이터 프레임에 컬럼을 추가해보자. 컬럼 생성은 mutate() 함수를 사용한다. 함수 사용시 mutate(새로 생성할 컬럼명 = 값/조건)으로 입력하는데 이 때, 조건일 경우 조건 설정에 if_else, case_when 2가지 방법을 사용할 수 있다.
library(dplyr)
buff = 0
if(buff == 0) {
new_df <- df %>%
mutate(sex_desc = if_else(sex == 0, 'Female', 'Male'))
} else {
new_df <- df %>%
mutate(sex_desc = case_when(sex == 0 ~ 'Female',
TRUE ~ 'None'))
}
new_df
컬럼 추가 결과이다.
> new_df
# A tibble: 50 x 10
id sex bday overall supervisor conditions colleagues workplace tasks sex_desc
<dbl> <dbl> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 1 1 1999-08-04 65 47 53 74 49 54 male
2 2 0 2000-01-16 58 79 73 72 41 46 Female
3 3 1 1999-07-16 0 32 10 25 9 30 male
4 4 0 1999-09-03 80 53 71 67 52 37 Female
5 5 1 1999-05-22 56 52 21 31 50 46 male
6 6 0 1999-10-19 93 92 45 80 100 77 Female
7 7 1 2000-02-05 45 57 44 55 19 47 male
8 8 1 1998-08-01 61 63 77 81 63 49 male
9 9 0 2000-01-09 68 63 49 76 39 99 Female
10 10 0 1999-09-19 71 66 69 81 53 62 Female
그런데 혹시라도 3, 4 등과 같은 이상치가 발생될 수 있으므로 조건을 정확히 설정하고 예외 숫자를 다르게 표현할 수 있게 하는 것을 추천한다. 아래는 case_when을 사용한 예제이다. (이 때, 0일 때는 여성, 1일 때는 남성, 나머지는 None으로 처리한다.)
new_df <- df %>%
mutate(sex_desc = case_when(sex == 0 ~ 'Female',
sex == 1 ~ 'male',
TRUE ~ 'None'))
4. 컬럼 순서 재정렬하기
이제 새롭게 생성된 컬럼를 성별 바로 뒤로 올 수 있도록 컬럼 재정렬을 해본다.
직접 컬럼 벡터 사용, select()함수를 사용하는 2가지 방법으로 컬럼을 재정렬할 수 있다.
**위 2가지 방법 모두 컬럼명을 이용해 재졍렬 순서를 입력하면 된다.
# library(dplyr)
buff = 0
if(buff == 0) {
new_columns_order = c('id', 'sex', 'sex_desc', 'bday',
'overall', 'supervisor', 'conditions',
'colleagues', 'workplace', 'tasks')
new_df <- new_df[new_columns_order]
} else {
new_df <- new_df %>%
select(id, sex, sex_desc, bday,
overall, supervisor, conditions,
colleagues, workplace, tasks)
}
new_df
아래는 재정렬된 결과이다.
> new_df
# A tibble: 50 x 10
id sex sex_desc bday overall supervisor conditions colleagues workplace tasks
<dbl> <dbl> <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 male 1999-08-04 65 47 53 74 49 54
2 2 0 Female 2000-01-16 58 79 73 72 41 46
3 3 1 male 1999-07-16 0 32 10 25 9 30
4 4 0 Female 1999-09-03 80 53 71 67 52 37
5 5 1 male 1999-05-22 56 52 21 31 50 46
6 6 0 Female 1999-10-19 93 92 45 80 100 77
7 7 1 male 2000-02-05 45 57 44 55 19 47
8 8 1 male 1998-08-01 61 63 77 81 63 49
9 9 0 Female 2000-01-09 68 63 49 76 39 99
10 10 0 Female 1999-09-19 71 66 69 81 53 62
5. 데이터 저장하기
아래 코드는 저번 포스트와 동일
#library(readr)
write_csv(new_df, file.path(root_path, 'word_add_sex_desc.csv'))
'R > 기본' 카테고리의 다른 글
R로 .csv 형식 저장하기 (0) | 2020.06.06 |
---|---|
R로 .sav 파일 읽기 (0) | 2020.06.06 |