데이터분석/R

R언어 공부 - 6

환성 2022. 12. 30. 14:08
728x90

날짜와 시간을 다루는 클래스

Date 

- 날짜는 나타낼 수 있지만 시간은 나타내지 못한다. 날짜 관련 작업을 하는 일반적인 용도의 클래스, 변환, 형식 설정, 기본 날짜, 연산, 표준시간대 처리 등의 작업을 할 때 사용한다.

 

POSIXct

- 날짜 및 시간 클래스, 1초 간격의 정확도로 시간의 순간을 나타낼 수 있다. 1970년 1월 1일 이후 몇 초나 흘렀는지 기록하는 방식으로 저장한다. 날짜 시간 정보(데이터 프레임 내)를 저장할 때 쓴다.

 

chron

- 날짜와 시간 모두 나타낼 수 있지만 복잡한 표준시간대 처리나 일광절약시간 등은 제외한다. 개량경제학이나 시게열 분석할 때 유용하다.

 

lubridate

- tidyverse 패키지이다. 표준시간대 같은 중요한 부가 기능을 유지하면서 날짜와 시간을 다루기 쉽게 설계되었다. 경과 시간, 주기, 간격 등과 같은 유용한 구조를 제공한다.

 

 

1) 문자열의 길이 알아내기

nchar 함수를 사용한다. length 함수는 벡터의 길이를 반환한다. 예를 들어 length 함수를 하나의 문자열에 적용하면 R은 그 문자열을 단일 개체 벡터로 보기 떄문에 1을 반환한다.

> nchar("ABCD")
[1] 4
> s <- c("AA", "BBB", "CCC")
> nchar(s)
[1] 2 3 3

# length 함수 예시
> length("ABCD")
[1] 1
> length(c("A", "B", "C"))
[1] 3

 

2) 문자열의 연결하기

paste 함수는 여러 개의 문자열을 연결해 준다. 또한 sep인자를 사용하면 다른 구분자를 지정할 수 있게 해준다. 구분자 없이 합치려면 빈 문자열("")을 사용하면 된다.

> paste("Everybody", "loves", "stats.")
[1] "Everybody loves stats."

> paste("Everybody", "loves", "stats.", sep= "")
[1] "Everybodylovesstats."

 

3) 구분자로 문자열 분할하기

문자열과 하위 문자열의 구분자, 두 개의 인자를 받는 strsplit을 사용한다. 

구분자는 간단한 문자열이나 정규표현식이다.

strsplit은 리스트를 반환하며, 리스트의 각 원소는 하위 문자열로 된 벡터이다.

> path <- "C:/data/data.csv"
> strsplit(path, "/")
[[1]]
[1] "C:"       "data"     "data.csv"

# 단일 문자열 대상으로 실행할 때 첫 번쨰 원소 꺼내기
> strsplit(path, "/")[[1]]
[1] "C:"       "data"     "data.csv"

4) 문자열의 모든 쌍별 조합 만들기

outer와 paste 함수를 함께 써서 가능한 모든 조합의 행렬을 만든다.

outer는 원래 외적을 계산하기 위한 함수고 세 번째 인자에 단순한 곱셈 대신, 다른 함수가 들어갈 수 있게 허용한다. paste를 넣음으로써 문자열 연결이 되어 문자열의 조합이 가능한 것이다.

또는 expand.grid를 사용해서 모든 조합을 나타내는 벡터 쌍을 만들수 있다.

a <- outer(문자열1, 문자열2, paste, sep ="")

# 예시
> locations <- c("NY", "LA", "CHI", "HOU")
> treatments <- c("T1", "T2", "T3")
> outer(locations, treatments, paste, sep="-")
     [,1]     [,2]     [,3]    
[1,] "NY-T1"  "NY-T2"  "NY-T3" 
[2,] "LA-T1"  "LA-T2"  "LA-T3" 
[3,] "CHI-T1" "CHI-T2" "CHI-T3"
[4,] "HOU-T1" "HOU-T2" "HOU-T3"

> expand.grid(treatments, locations)
   Var1 Var2
1    T1   NY
2    T2   NY
3    T3   NY
4    T1   LA
5    T2   LA
6    T3   LA
7    T1  CHI
8    T2  CHI
9    T3  CHI
10   T1  HOU
11   T2  HOU
12   T3  HOU

5) 날짜의 일부 추출하기

Date 객체를 날짜 부분들의 리스트인 POSIXlt 객체로 변환하고 리스트에서 원하는 부분을 추출한다.

> d <- as.Date("2022-12-30")
> p <- as.POSIXlt(d)
> p$mday # 그 달의 몇째 날인지
[1] 30
> p$mon  # 월(0 = 1월)
[1] 11
> p$year + 1900 # 연도
[1] 2022

sec 초(0~61)
min 분(0~59)
hour 시(0~23)
mday 해당 달의 몇째 날(1~31)
mon 월(0~11)
year 1900년 이후로 지난 햇수
wday 해당 주의 몇째 날(0~6)
yday 해당 해의 몇째 날(0~365)

 

'데이터분석 > R' 카테고리의 다른 글

R언어 공부 - 7  (0) 2022.12.30
R언어 공부 - 5  (3) 2022.12.29
R언어 공부 - 4  (0) 2022.12.27
R언어 공부 - 3  (0) 2022.12.27
R언어 공부 - 2  (0) 2022.12.26