R/R

[R] 03. 형 변환(casting)

구름솜:D 2023. 11. 22. 17:09
728x90

형 변환(Casting)은 자료형의 타입을 변환하는 것을 말한다.

형 변환이 필요한 이유는 서로 다른 데이터타입끼리의 연산이 불가능 하기 때문이다.

 ex, 문자타입과 숫자타입 연산 불가능, 문자타입과 날짜타입 연산 불가능

 (단, 날짜 타입과 숫자 타입 서로는 연산가능)

 

 

형 변환의 종류

암시적형변환(자동형변환) : 사용자가 바꾸지 않아도 내부적으로 자료형이 변환되는 경우

명시적형변환 : 사용자가 특정 함수를 사용하여 의도적으로 자료형을 변환하는 경우

 

 

자료형과 자료구조 확인하기

mode() : 데이터의 유형을 확인하는 함수

typeof() : 데이터의 유형을 확인하는 함수

더보기

- mode()와의 차이점

: mode()함수는 정수, 실수 모두  numeric(숫자형)으로 표현, typeof()함수는 정수(integer)와 실수(double) 구분

class() : 데이터의 속성을 확인 할 수 있는 함수

str() : 데이터 유형과 값,속성, 길이 등을 전체적으로 확인 할 수 있는 함수

head() : 데이터의 처음 6행까지의 값을 보여주는 함수

tail() : 데이터의 마지막 6행까지의 값을 보여주는 함수

 

 

R의 형변환 함수

as.바꾸고 싶은 자료형/자료구조(바꾸고 싶은 객체)

-자료형변환

as.character () : 객체를 문자타입으로 변환

as.numeric() / as.integer() / as. double() : 객체를 숫자형/정수형/실수형으로 변환

as.Date () : 객체를 날짜타입으로 변환

as.logical() : 객체를 논리타입으로 변환

-자료구조변환

as.vector() : 객체를 벡터로 변환

as.matrix() : 객체를 행렬로 변환

as.array() : 객체를 리스트로 변환

as.list() : 객체를 리스트로 변환

as.data.frame() : 객체를 데이터프레임으로 변환

as.factor() : 객체를 범주형으로 변환

 

v1 <- 1
class(v1)         #[1] "numeric"

v1<-as.character(v1)
class(v1)         #[1] "character"

 

 

* 날짜를 형식에 맞춰 출력하는 방법

1) 문자타입으로 날짜 포맷에 맞춰서 출력하기

  (문자타입이 아닌 객체를 문자로 바꿔 날짜포맷에 맞춰 출력 )

 as.character(문자타입이 아닌 객체, format)

vdate1 <- Sys.Date()  # 오늘날짜(날짜타입)

as.character(vdate1, '%Y')   # 최근 버전부터 불가(이전 버전 가능)
strftime(vdate1, '%Y')       # 문자타입 리턴(str <- time format 변경)

 

2) 날짜타입으로 형변환하여 출력하기

  (날짜타입이 아닌 객체를 날짜로 바꿔 날짜포맷에 맞춰 출력)

as.Date(날짜타입이 아닌 객체, format)

vdate2 <- '2023/01/01'

vdate2 + 100                         # 연산불가
as.Date(vdate2) + 100                # 연산가능(format 생략 시 자동으로 년-월-일 순서로 파싱)
as.Date(vdate2, '%Y/%m/%d') + 100    # 연산가능

strptime(vdate2)                     # format 생략 불가
strptime(vdate2, '%Y/%m/%d')         # format 전달


as.Date(19951201, '%Y/%m/%d') + 100    # 연산가능

 

 

[ 참고 - 날짜포맷(R, Python 공통) ]
 %Y : 네자리 연도
 %y : 두자리 연도
 %m : 월
 %d : 일
 %H : 시
 %M : 분
 %S : 초
 %A : 요일(문자)
 %w : 요일(숫자)  일요일:0, 월요일:1

 

strftime() 함수는 format 으로 가리키는 스트링에서 제어하는 대로, s로 가리키는 배열에 바이트를 배치합니다.