R 학습 8편: 날짜와 시간
일반적으로 R 언어에서 만들어진 시간 데이터는 문자형을 통해 전환되며 문자열과 시간 유형은 은밀하게 변환할 수 없으며 상응하는 함수를 통해 텍스트를 분류하여 해석해야 한다.
하나, 시스템의 현재 날짜와 시간
프로그래밍에서 현재 날짜와 시간을 얻기 위해 두 가지 자주 사용하는 함수가 있는데 이 두 함수는 Sys로 시작하고 되돌아오는 시간은 운영체제 로케일의 영향을 받는다. 따라서 되돌아오는 시간은 로컬 형식으로 로컬 읽기 습관에 부합된다.
> Sys.Date()
[1] "2018-05-07"
> Sys.time()
[1] "2018-05-07 22:11:45 CST"
R에는 현재 시간에 대응하는 텍스트를 되돌려주는 함수date()가 하나 더 있습니다.
> date()
[1] "Tue May 08 11:32:52 2018"
둘째, 텍스트를 날짜와 시간으로 해석한다
날짜 값은 일반적으로 R에 텍스트로 입력된 다음 숫자로 저장된 날짜 변수로 바뀝니다.날짜는 텍스트로 변환해야 읽기 쉽다.
1, as.Date () 텍스트를 날짜로 변환
함수 as.Date () 는 텍스트를 Date 형식으로 변환하는 데 사용됩니다.
as.Date(x, format)
format 매개 변수는 입력 형식을 지정하는데 자주 사용하는 날짜 형식 기호는 다음과 같습니다.
as.Date(c('2018-05-01','2018-05-05'),'%Y-%m-%d')
2, strptime () 해석 날짜
함수strptime () 은stringparse time의 약칭으로POSIXlt 날짜를 되돌려줍니다.날짜를 해석할 때 텍스트와 날짜에 대응하는 위치를 지정해야 하며, 날짜의 형식은%+자모를 사용하여 지정해야 한다.
format(x, format = "", tz = "")
매개변수 tz는 시간대(time zone)이고 기본값은 비어 있으며 해석할 때 시간대를 지정하지 않으면 R은 Sys를 호출합니다.timezone
날짜 형식은 format () 함수와 같고, 자주 사용하는 시간 형식 기호는 다음과 같습니다.
> nowstr date()
> nowtime '%a %b %d %H:%M:%S %Y')
> print(nowtime)
[1] "2018-05-08 13:01:04 CST"
셋째, 날짜와 시간을 텍스트로 포맷합니다
날짜와 시간을 텍스트로 포맷하면 읽기에 편리하다
1, format () 날짜를 텍스트로 변환
날짜를 포맷하여 읽을 수 있는 텍스트로 변환하는 format() 함수의 정의는 다음과 같습니다.
format(x, format = "", tz = "")
x는 날짜 매개 변수이고 format은 출력 형식입니다. tz는 시간대입니다. 이 함수는 지정한 형식에 따라 텍스트를 출력합니다.
today Sys.Date()
mydate
2, strftime () 포맷 날짜
함수strftime () 는stringformated time의 약칭으로 시간을 문자열로 변환하는 데 사용됩니다.
strptime(x, format, tz = "")
이 함수와format() 함수의 기능과 사용 방식은 거의 완전히 같다.
today Sys.Date()
mydate '%Y-%m-%d')
날짜 비교
POSIXct 클래스는 시간을 초 단위로 계산하기 때문에 Date 클래스는 날짜를 일 단위로 계산합니다. 이는 날짜 값에서 비교 및 산술 연산을 수행할 수 있음을 의미합니다.
1, 시간과 숫자 더하기
시간은 초 단위:
> time1 Sys.time()
> print(time1)
[1] "2018-05-08 13:16:36 CST"
> print(time1+60*60)
[1] "2018-05-08 14:16:36 CST"
일자:
> date1 Sys.Date()
> print(date1)
[1] "2018-05-08"
> print(date1+1)
[1] "2018-05-09"
2, 시간 비교
Date 클래스와 POSIXct 클래스는 실제로 모두 정수이기 때문에 크기를 직접 비교할 수 있습니다
date1 as.Date('2018-01-01')
date2 as.Date('2018-02-01')
if (date2>date1) print ('gt')
5, lubridate 패키지 소개
lubridate 패키지는 날짜와 시간의 처리를 더욱 규범화하고 간단하며 유연하게 합니다.lubridate의 모든 해석 함수는 POSIXct 날짜를 되돌려줍니다. 기본값은 UTC 시간대입니다.
lubridate 패키지는 주로 두 가지 함수가 있는데 하나는 처리 시점 데이터(time instants), 다른 하나는 처리 시간대 데이터(time spans)이다.
lubridate 패키지를 설치하고 로드하려면 다음과 같이 하십시오.
install.packages("lubridate")
library(lubridate)
시스템의 현재 시간 now(), 및 Sys.time() 함수가 되돌아오는 시간은 같다.시스템의 현재 날짜 today(), Sys.Date() 함수가 반환된 날짜는 같습니다.
now(tzone = "")
today(tzone = "")
1, 문자열에서 날짜 유형으로 변환
ymd() 함수는 문자형 데이터로부터 분석하는 시간에 사용되며 이 함수는 다양한 구분자를 자동으로 식별합니다. 함수의 정의는 다음과 같습니다.
ymd(..., quiet = FALSE, tz = NULL)
매개변수 주석:
x '2010-04-08')
한편, ymd가 대표하는 텍스트의 형식은 다음과 같아야 한다. year,month,day,ymd를 제외하고ydm,mdy,myd,dmy,dym도 있다.
2, 문자 유형에서 시간 유형으로 변환
ymd_hms () 함수는 텍스트를 시간으로 해석하는 데 사용되며, 이 함수는 각종 구분자를 자동으로 식별합니다
ymd_hms(..., quiet = FALSE, tz = "UTC")
3, 시간을 추출하거나 설정하는 부분
예를 들어, 현재 시간의 월을 추출합니다.
> month(tnow())
[1] 5
예를 들어, 현재 시간을 6월로 설정합니다.
x< now()
month(x) 6
4, 간격(Intervals)
시간 간격은 시작 시간과 종료 시간으로 구성된 대상으로 그 자체의 용도는 크지 않으며 지정된 기간과 주기에 가장 많이 사용된다.
auckland interval(arrive, leave)
auckland
#> [1] 2011-06-04 12:00:00 NZST--2011-08-10 14:00:00 NZST
auckland leave
auckland
#> [1] 2011-06-04 12:00:00 NZST--2011-08-10 14:00:00 NZST
5, 시간의 연산
블루데이터는 두 가지 대상을 만들 수 있다. 기간(Duration)과 주기(Period),period를 만드는 보조 함수는 unit+s,duration을 만드는 보조 함수는 d+unit+s,unit는 시간 단위이다. 자주 사용하는 시간 단위는 year,month,week,day,hour,minute,second이다.기간 동안 지정한 시간 간격 초의 배수는 고정된 초수입니다.예를 들어 하루의 총 시간은 86400초(60x60x24), 1년의 총 시간은 86400x365(초)이고 기간 유형은 1년의 일수를 365일로 고정시켜 윤년을 고려하지 않았다.주기period는 달력에 따라 시간의 넓이를 지정합니다. 이것은 주기를 한 시간에 추가하기 전에period의 정확한 시간 경계가 고정되지 않는다는 것을 의미합니다.예를 들어 한 해의 주기는 365일일 수도 있고 366일이 될 수도 있는데 이것은 그것이 윤년인지 아닌지에 달려 있다.시간과 날짜의 산술 연산은 기간과 주기와 관계가 있어 주기period 유형을 자주 사용한다.
일반적으로 사용되는 duration 클래스의 함수는 다음과 같습니다.
duration(num = NULL, units = "seconds", ...)
is.duration(x)
dseconds(x = 1)
dminutes(x = 1)
dhours(x = 1)
ddays(x = 1)
dweeks(x = 1)
dyears(x = 1)
일반적인 period 클래스의 함수는 다음과 같습니다.
period(num = NULL, units = "second", ...)
is.period(x)
seconds(x = 1)
minutes(x = 1)
hours(x = 1)
days(x = 1)
weeks(x = 1)
years(x = 1)
months(x)
주의,duration류에는 dmonths () 함수가 없습니다. 월의 지속 일수가 매우 일정하지 않아서 일정한 총 시간 (초) 을 지정할 수 없습니다.
예제 1, 2분의period와duration은 각각:
minutes(2) ## period
#> [1] "2M 0S"
dminutes(2) ## duration
#> [1] "120s (~2 minutes)"
예2, 시간과 기간과 주기를 더하면 되돌아오는 결과가 다르다.
> ymd(20120101) + dyears(1)
[1] "2012-12-31"
> ymd(20120101) + years(1)
[1] "2013-01-01"
예3, 날짜의 다음 달:
ymd('2018-01-01')+months(1)
6, 날짜 주기의 시작과 끝
다음 두 함수를 사용하여 날짜의 시작 또는 종료 시간을 가져옵니다.
floor_date(x, unit = "seconds", week_start = getOption("lubridate.week.start", 7))
ceiling_date(x, unit = "seconds", change_on_boundary = NULL, week_start = getOption("lubridate.week.start", 7))
예를 들어, YTD의 시작 및 종료 날짜를 가져옵니다.
ytd_start 'year')
ytd_end 'month')
참조 문서:
Make Dealing with Dates a Little Easier
Do more with dates and times in R
R 언어의 시간과 날짜
R 패키지 실습: lubridate 처리 시간 데이터
시간 처리 – lubridata 패키지
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.