1. 숫자를 문자로 변환

데이터 분석 작업을 수행하는 경우 대부분 숫자를 다루게 되지만, 결국 숫자를 사람이 이해할 수 있고, 익숙한 형태로 변환을 해야한다. 예를 들어 천자리 넘어가는 숫자의 경우 , 콤마를 찍어 숫자에 대한 가독성을 높이거나 숫자의 소숫점, 환종에 대한 표현, 및 p-값 등을 표현할 때 숫자 서식(format)에 대한 처리가 최종 전달단계에서 중요하게 고려해야할 사항이 된다.

R에서는 이에 대해 다양한 기능을 제공하는데 최종적으로 고려할 주요 함수는 다음과 같다.

# 0. 환경설정 ---------------------------
# devtools::install_github("richierocks/rebus")
# library(rebus)
# library(stringr)
# library(stringi)

# 1. 데이터 -------------------------
p_value_v <- c(0.32, 0.99, 0.0000789, 0.00000000001)
percent_v  <- c(7, -7.97, 9.00, -1.002)
money_v <-  c(72.11, 871092.118, 7030.18, 27291.91)

# 2. 숫자를 문자------------------------

formatC(p_value_v, format="f", digits = 2)
[1] "0.32" "0.99" "0.00" "0.00"
formatC(p_value_v, format="g", digits = 2)
[1] "0.32"    "0.99"    "7.9e-05" "1e-11"  
formatC(p_value_v, format="e", digits = 2)
[1] "3.20e-01" "9.90e-01" "7.89e-05" "1.00e-11"
formatC(percent_v, digits=2, format="f")
[1] "7.00"  "-7.97" "9.00"  "-1.00"
formatC(money_v, digits=1, format="f", big.mark = ",", flag="+ ")
[1] "+72.1"      "+871,092.1" "+7,030.2"   "+27,291.9" 
writeLines(formatC(money_v, digits=1, format="f", big.mark = ",", flag="+"))
+72.1
+871,092.1
+7,030.2
+27,291.9

2. 숫자 표식

숫자의 가독성을 높이고자 %와 같은 문자를 숫자와 함께 표현한다.

# 3. 숫자에 표식 ------------------------

with_currency_v <- paste("\u20A9", money_v, sep="")

paste(percent_v, "%", sep="")
[1] "7%"      "-7.97%"  "9%"      "-1.002%"
paste(with_currency_v, collapse=", ")
[1] "\\72.11, \\871092.118, \\7030.18, \\27291.91"

3. 표 작성

원화 유니코드는 \u20A9으로 이를 반영하여 간단한 표를 구현하는 것도 가능하다.

# 4. 숫자표 생성 ------------------------

year_names_v <- c("2014년", "2015년", "2016년", "총합")

pretty_money_v <- formatC(money_v, digits=1, big.mark=",", format="f")
korean_money <- paste("\u20A9", pretty_money_v, sep="")

formatted_names <- format(year_names_v, justify="right")

rows <- paste(formatted_names, korean_money, sep="  ---  ")

writeLines(rows)
2014년  ---  \72.1
2015년  ---  \871,092.1
2016년  ---  \7,030.2
  총합  ---  \27,291.9