본문 바로가기
Biz/Analysis

R에서 아스키문자(ascii)로 된 구분자 처리

by 조병희 2019. 3. 23.

아스키코드 중 제어문자에 해당되는 문자들은 다음과 같다.

ASCII control characters non printable :
ASCII code 00 = NULL ( Null character )
ASCII code 01 = SOH ( Start of Header )
ASCII code 02 = STX ( Start of Text )
ASCII code 03 = ETX ( End of Text, hearts card suit )
ASCII code 04 = EOT ( End of Transmission, diamonds card suit )
ASCII code 05 = ENQ ( Enquiry, clubs card suit )
ASCII code 06 = ACK ( Acknowledgement, spade card suit )
ASCII code 07 = BEL ( Bell )
ASCII code 08 = BS ( Backspace )
ASCII code 09 = HT ( Horizontal Tab )
ASCII code 10 = LF ( Line feed )
ASCII code 11 = VT ( Vertical Tab, male symbol, symbol for Mars )
ASCII code 12 = FF ( Form feed, female symbol, symbol for Venus )
ASCII code 13 = CR ( Carriage return )
ASCII code 14 = SO ( Shift Out )
ASCII code 15 = SI ( Shift In )
ASCII code 16 = DLE ( Data link escape )
ASCII code 17 = DC1 ( Device control 1 )
ASCII code 18 = DC2 ( Device control 2 )
ASCII code 19 = DC3 ( Device control 3 )
ASCII code 20 = DC4 ( Device control 4 )
ASCII code 21 = NAK ( NAK Negative-acknowledge )
ASCII code 22 = SYN ( Synchronous idle )
ASCII code 23 = ETB ( End of trans. block )
ASCII code 24 = CAN ( Cancel )
ASCII code 25 = EM ( End of medium )
ASCII code 26 = SUB ( Substitute )
ASCII code 27 = ESC ( Escape )
ASCII code 28 = FS ( File separator )
ASCII code 29 = GS ( Group separator )
ASCII code 30 = RS ( Record separator )
ASCII code 31 = US ( Unit separator )
ASCII code 127 = DEL ( Delete )

Hive 에서 데이터를 생성하면 컬럼 구분값의 기본 값으로 ^A이 사용된다.

create table tab1(
col1 string,
col2 string,
col3 string)
stored as textfile;

insert into tab1 values('a','b','c');

hdfs dfs -cat /..../tab1/00000
abc


기본적으로 ^A는 보이지 않는다 그래서 cat -v 옵셥을 줘서 보게 되면

bhjo@DESKTOP-RUF1A3F MINGW64 /c

$ cat 00000

abc

bhjo@DESKTOP-RUF1A3F MINGW64 /c

$ cat -v 00000

a^Ab^Ac

이런 형태로 표시됨을 알수 있다.


이런 데이터를 읽기 위해서 여러가지 방법이 있을 텐데

1. 테이블 생성 시 구분자를 다른 것으로 생성

2. 자료 추출 시 구분자를 지정

3. python 등을 통해 ^A를 문자로 인식하여 처리

4. read.table 함수의 옵션 사용


이중에서 이번에는 4번의 경우 아래와 같이 sep 에 \(아스키코드값) 입력하여 읽는다

> df <- read.table(file = "C:/00000", sep = '\001', na.strings ='\\N', quote = "", fill=T)

> df
  V1 V2 V3
1  a  b  c


'Biz > Analysis' 카테고리의 다른 글

계획구매와 비계획구매  (0) 2023.06.15
RStudio Server: 서버 구성과 관리  (0) 2016.07.17
RStudio Server with a Proxy  (0) 2016.07.17
Shiny에서 SparkR 실행하기  (0) 2016.03.28
RStudio 에서 Spark 사용하기  (1) 2016.03.26

댓글