R Language
윤활제
수색…
통사론
- ymd_hms (..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale ( "LC_TIME"))
- 지금 (tzone = "")
- 간격 (시작, 끝, tzone = attr (시작, "tzone"))
- 기간 (num = NULL, units = "seconds", ...)
- 기간 (num = NULL, units = "second", ...)
비고
CRAN에서 패키지를 설치하려면 다음을 수행하십시오.
install.packages("lubridate")
Github에서 개발 버전을 설치하려면
library(devtools)
# dev mode allows testing of development packages in a sandbox, without interfering
# with the other packages you have installed.
dev_mode(on=T)
install_github("hadley/lubridate")
dev_mode(on=F)
lubridate 패키지에 비 네트를 얻으려면 :
vignette("lubridate")
어떤 함수 foo
에 대한 도움을 얻으려면 :
help(foo) # help about function foo
?foo # same thing
# Example
# help("is.period")
# ?is.period
함수 foo
대한 예제를 얻으려면 :
example("foo")
# Example
# example("interval")
윤곽선을 사용하여 문자열에서 날짜와 날짜를 파싱하기
lubridate
패키지는 문자열에서 날짜 및 datetime 객체의 lubridate
하는 편리한 기능을 제공합니다. 함수는
편지 | 구문 분석 할 요소 | 베이스 R 상당 |
---|---|---|
와이 | 년 | %y , %Y |
m (y와 d 포함) | 달 | %m , %b , %h , %B |
디 | 일 | %d , %e |
h | 시간 | %H , %I%p |
m (h와 s 포함) | 분 | %M |
에스 | 초 | %S |
월, 일,시, 분, 초 등의 순서로 날짜 시간을 파싱하는 경우, "2016-07-22"
또는 ymd_hms()
와 같이 연도가 뒤에 오는 날짜와 그 다음에 날짜가 파싱 된 경우 ymd()
초, 예 : "2016-07-22 13:04:47"
.
이 함수는 추가 인수없이 대부분의 구분 기호 (예 : /
, -
및 공백)를 인식 할 수 있습니다. 또한 일관성없는 구분 기호로 작업합니다.
날짜
date 함수는 Date
클래스의 객체를 반환합니다.
library(lubridate)
mdy(c(' 07/02/2016 ', '7 / 03 / 2016', ' 7 / 4 / 16 '))
## [1] "2016-07-02" "2016-07-03" "2016-07-04"
ymd(c("20160724","2016/07/23","2016-07-25")) # inconsistent separators
## [1] "2016-07-24" "2016-07-23" "2016-07-25"
Datetimes
유틸리티 함수
날짜 시간을 사용하여 구문 분석 할 수 ymd_hms
포함 변종 ymd_hm
및 ymd_h
. 모든 datetime 함수는 as.POSIXct
또는 strptime
과 비슷한 tz
시간대 인수를 사용할 수 있지만 로컬 시간대 대신 "UTC"
가 기본값입니다.
datetime 함수는 POSIXct
클래스의 객체를 반환합니다.
x <- c("20160724 130102","2016/07/23 14:02:01","2016-07-25 15:03:00")
ymd_hms(x, tz="EST")
## [1] "2016-07-24 13:01:02 EST" "2016-07-23 14:02:01 EST"
## [3] "2016-07-25 15:03:00 EST"
ymd_hms(x)
## [1] "2016-07-24 13:01:02 UTC" "2016-07-23 14:02:01 UTC"
## [3] "2016-07-25 15:03:00 UTC"
파서 함수
lubridate
는 또한 as.POSIXct
또는 strptime
과 같은 형식화 문자열을 사용하여 datetimes를 파싱하는 세 가지 함수를 포함 strptime
.
기능 | 출력 클래스 | 허용되는 문자열 서식 지정 |
---|---|---|
parse_date_time | POSIXct | 융통성 있는. % 또는 lubridate datetime 함수 이름 스타일 (예 : "ymd hms" 하여 strptime 스타일을 허용 strptime . 이기종 데이터에 대한 주문 벡터를 수락하고 적절한 것으로 추측합니다. |
parse_date_time2 | 기본 POSIXct; lt = TRUE 이면, POSIXlt | 엄격한. 제한된 세트의 strptime 토큰 ( % 또는 제외) 만 허용합니다. |
fast_strptime | 기본 POSIXlt; lt = FALSE 경우 POSIXct | 엄격한. 제한된 집합에서 구분 기호 ( - , / , : 등)가있는 % 표정의 strptime 토큰 만 허용합니다. |
x <- c('2016-07-22 13:04:47', '07/22/2016 1:04:47 pm')
parse_date_time(x, orders = c('mdy Imsp', 'ymd hms'))
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 13:04:47 UTC"
x <- c('2016-07-22 13:04:47', '2016-07-22 14:47:58')
parse_date_time2(x, orders = 'Ymd HMS')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"
fast_strptime(x, format = '%Y-%m-%d %H:%M:%S')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"
parse_date_time2
및 fast_strptime
은 효율성을 높이기 위해 빠른 C 파서를 사용합니다.
토큰을 포맷하려면 ?parse_date_time
을 참조하십시오.
lubridate의 날짜와 시간 분석하기
Lubridate는 문자열을 파싱하여 날짜로 변환하는 ymd()
계열의 함수를 제공합니다. 문자 y, m 및 d는 날짜 - 시간의 년, 월 및 일 요소에 해당합니다.
mdy("07-21-2016") # Returns Date
## [1] "2016-07-21"
mdy("07-21-2016", tz = "UTC") # Returns a vector of class POSIXt
## "2016-07-21 UTC"
dmy("21-07-2016") # Returns Date
## [1] "2016-07-21"
dmy(c("21.07.2016", "22.07.2016")) # Returns vector of class Date
## [1] "2016-07-21" "2016-07-22"
lubridate에서 날짜와 시간 조작하기
date <- now()
date
## "2016-07-22 03:42:35 IST"
year(date)
## 2016
minute(date)
## 42
wday(date, label = T, abbr = T)
# [1] Fri
# Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat
day(date) <- 31
## "2016-07-31 03:42:35 IST"
# If an element is set to a larger value than it supports, the difference
# will roll over into the next higher element
day(date) <- 32
## "2016-08-01 03:42:35 IST"
인스턴스
순간은 특정한 순간입니다. 순간을 참조하는 날짜 - 시간 객체는 즉시 인식됩니다. 객체가 즉석인지 테스트하려면 is.instant
사용 is.instant
.
library(lubridate)
today_start <- dmy_hms("22.07.2016 12:00:00", tz = "IST") # default tz="UTC"
today_start
## [1] "2016-07-22 12:00:00 IST"
is.instant(today_start)
## [1] TRUE
now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"
is.instant(now_dt)
## [1] TRUE
is.instant("helloworld")
## [1] FALSE
is.instant(60)
## [1] FALSE
간격, 기간 및 기간
간격 은 lubridate에서 시간 절약을 기록하는 가장 간단한 방법입니다. 간격은 두 특정 순간 사이에 발생하는 시간입니다.
# create interval by substracting two instants
today_start <- ymd_hms("2016-07-22 12-00-00", tz="IST")
today_start
## [1] "2016-07-22 12:00:00 IST"
today_end <- ymd_hms("2016-07-22 23-59-59", tz="IST")
today_end
## [1] "2016-07-22 23:59:59 IST"
span <- today_end - today_start
span
## Time difference of 11.99972 hours
as.interval(span, today_start)
## [1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST
# create interval using interval() function
span <- interval(today_start, today_end)
[1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST
기간 은 두 순간 사이에 발생하는 정확한 시간을 측정합니다.
duration(60, "seconds")
## [1] "60s"
duration(2, "minutes")
## [1] "120s (~2 minutes)"
참고 : 주 단위는 변동성 때문에 사용되지 않습니다.
지속 기간은 dseconds
, dminutes
및 기타 기간 도우미 기능을 사용하여 생성 할 수 있습니다.
전체 목록을 보려면 ?quick_durations
를 실행하십시오.
dseconds(60)
## [1] "60s"
dhours(2)
## [1] "7200s (~2 hours)"
dyears(1)
## [1] "31536000s (~365 days)"
지속 시간을 빼고 순간에 추가하여 새로운 순간을 얻을 수 있습니다.
today_start + dhours(5)
## [1] "2016-07-22 17:00:00 IST"
today_start + dhours(5) + dminutes(30) + dseconds(15)
## [1] "2016-07-22 17:30:15 IST"
기간은 간격에서 생성 될 수 있습니다.
as.duration(span)
[1] "43199s (~12 hours)"
마침표 는 두 순간 사이에 발생하는 시계 시간의 변화를 측정합니다.
마침표는 period
기능뿐만 아니라 seconds
, hours
등의 다른 도우미 기능을 사용하여 만들 수 있습니다. 마침표 도우미 기능의 전체 목록을 보려면 ?quick_periods
실행하십시오.
period(1, "hour")
## [1] "1H 0M 0S"
hours(1)
## [1] "1H 0M 0S"
period(6, "months")
## [1] "6m 0d 0H 0M 0S"
months(6)
## [1] "6m 0d 0H 0M 0S"
years(1)
## [1] "1y 0m 0d 0H 0M 0S"
is.period
함수는 객체가 마침표인지 확인하는 데 사용할 수 있습니다.
is.period(years(1))
## [1] TRUE
is.period(dyears(1))
## [1] FALSE
반올림 날짜
now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"
round_date()
는 날짜 - 시간 객체를 가져 와서 지정된 시간 단위의 가장 가까운 정수 값으로 반올림합니다.
round_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"
round_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"
round_date(now_dt, "year")
## [1] "2017-01-01 IST"
floor_date()
는 날짜 - 시간 객체를 가져 와서 지정된 시간 단위의 가장 가까운 정수 값으로 반올림합니다.
floor_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"
floor_date(now_dt, "hour")
## [1] "2016-07-22 13:00:00 IST"
floor_date(now_dt, "year")
## [1] "2016-01-01 IST"
ceiling_date()
는 날짜 - 시간 객체를 가져 와서 지정된 시간 단위의 가장 가까운 정수 값으로 반올림합니다.
ceiling_date(now_dt, "minute")
## [1] "2016-07-22 13:54:00 IST"
ceiling_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"
ceiling_date(now_dt, "year")
## [1] "2017-01-01 IST"
기간과 기간의 차이
기간과 달리 기간을 사용하여 윤초, 윤년 및 DST 변경과 같은 이벤트가 언제 발생 하는지를 모른 채 정확하게 시계 시간을 모델링 할 수 있습니다.
start_2012 <- ymd_hms("2012-01-01 12:00:00")
## [1] "2012-01-01 12:00:00 UTC"
# period() considers leap year calculations.
start_2012 + period(1, "years")
## [1] "2013-01-01 12:00:00 UTC"
# Here duration() doesn't consider leap year calculations.
start_2012 + duration(1)
## [1] "2012-12-31 12:00:00 UTC"
시간대
with_tz
는 다른 시간대에 나타나는 것처럼 날짜 - 시간을 반환합니다.
nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"
# corresponding Europe/Moscow time
with_tz(nyc_time, tzone = "Europe/Moscow")
## [1] "2016-07-22 12:49:08 MSK"
force_tz
은 새로운 표준 시간대에서 x와 같은 시계 시간을 갖는 날짜 시간을 반환합니다.
nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"
force_tz(nyc_time, tzone = "Europe/Moscow") # only timezone changes
## [1] "2016-07-22 05:49:08 MSK"