# A tibble: 120 × 12
id pho_1 pho_2 pho_3 sex age emp_q20 emp_q22 emp_q23 emp_q24 emp_q25
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 95 95 95 1 2004 80 NA 80 80 70
2 2 58 62 NA 0 2003 62 58 59 57 56
3 3 100 50 50 NA 2003 90 51 51 51 52
4 4 77 77 64 1 2004 66 72 88 82 67
5 5 NA NA NA NA NA NA NA NA NA NA
6 6 100 75 100 0 2004 100 60 70 55 70
# ℹ 114 more rows
# ℹ 1 more variable: emp_q26 <dbl>
읽어들인 직후 출력되는 column specification은 각 열의 타입을 어떻게 추측했는지 알려줌.
의도와 다르게 추측된 열이 있는지 항상 확인할 것
Note
read_csv()의 자주 사용되는 옵션
read_csv("data/file.csv", skip =2) # 첫 2줄 스킵read_csv("data/file.csv", na =".") # 결측치가 .으로 기록된 파일read_csv("data/file.csv", na =c("", "NA", "999"))read_csv("data/file.csv", show_col_types =FALSE) # 타입 추측 메시지를 끔# 열 타입을 직접 지정 (추측이 틀렸을 때)read_csv("data/file.csv", col_types =cols(id =col_character()))# 열 이름이 없는 파일read_csv("data/file.csv", col_names =c("id", "wage", "age"))
한글이 깨질 때
국내에서 만들어진 csv 파일은 UTF-8이 아니라 CP949(EUC-KR)로 저장된 경우가 많음
read_excel("salaries.xlsx", sheet =2) # 기본값은 sheet = 1read_excel("salaries.xlsx", sheet ="personnel")excel_sheets("salaries.xlsx") # 시트 이름 목록 확인# 표가 시트 한가운데 있는 경우 범위를 지정read_excel("salaries.xlsx", range ="B3:F102")
엑셀 파일로 쓰려면 writexl::write_xlsx(df, "out.xlsx")
Warning
엑셀 파일은 한 열 안에 숫자와 문자가 섞여 있는 경우가 흔함.
이때 read_excel()은 열 전체를 문자로 읽거나 일부를 NA로 만들 수 있으므로, 읽은 직후 glimpse()로 타입을 확인할 것
# A tibble: 1,000 × 4
stu_id sex race ethnic
<dbl+lbl> <fct> <fct> <fct>
1 124966 Female White not Hispanic white-asian
2 124972 Male White not Hispanic white-asian
3 175551 Female Black not Hispanic blk,namer,hisp
4 180660 Male White not Hispanic white-asian
5 180672 Female White not Hispanic white-asian
6 298885 Male Black not Hispanic blk,namer,hisp
# ℹ 994 more rows
stud |>count(race)
# A tibble: 6 × 2
race n
<fct> <int>
1 Asian/Pacific islndr 61
2 Hispanic 114
3 Black not Hispanic 100
4 White not Hispanic 704
5 Amer ind/AK Native 10
6 <NA> 11
Warning
stud_spss |> haven::as_factor()처럼 데이터셋 전체에 적용하면 stu_id, sch_id 같은 ID 변수까지 factor로 바뀌어버림 (SPSS에서는 이들도 labelled 변수임).
필요한 변수만 위와 같이 골라서 변환하거나, 값이 모두 label을 가진 변수만 변환해주는 labelled::unlabelled()를 쓸 것