문제
날짜/시간 형식을 적용한 다음 날짜/시간 형식을 적용한 후 날짜/시간의 차이를 가져 가고 싶습니다.
그러나 특정 항목에 대해 그렇게 할 때 콘솔에서 올바른 답을 얻을 수 있지만 전체 세트에서 작업을 수행 할 때 콘솔은 숫자를 출력하며 날짜 프레임은 볼 수 있듯이 그 숫자를 반영합니다.
차이를 취하려고 할 때 데이터 프레임에서 시간을 어떻게 얻을 수 있습니까?나는 루브리데이트 패키지를 사용하고 있는데,그렇게 할 수있는 기능이 있습니까?
여기에 몇 가지 예제 코드/사진을 설명하는 데이터입니다
CR_Date <- data.frame(
pos1="2014-07-01 00:00:00",
pos2=c("2014-07-01 00:00:00","2014-07-01 10:15:00")
)
CR_Date[] <- lapply(CR_Date,as.POSIXct)
CR_Date
# pos1 pos2
#1 2014-07-01 2014-07-01 00:00:00
#2 2014-07-01 2014-07-01 10:15:00
CR_Date$pos2[2] - CR_Date$pos1[2]
#Time difference of 10.25 hours
CR_Date$hours <- CR_Date$pos2 - CR_Date$pos1
해결책
첫째, 이것은 윤활물과 아무 관련이 없습니다.
둘째, RSTUDIO는 디스플레이 창에서 변수를 인쇄하여 나사로 내려 놓았습니다.명령 줄 창에서 CR_Date$hours
를 입력하면 인쇄물이 표시됩니다
#Time differences in secs
#[1] 0 36900
.
및 head(CR_Date)
는 다음과 같습니다 :
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0 secs
#2 2014-07-01 2014-07-01 10:15:00 36900 secs
.
그 중 하나가 표시되는 것과 같이 당신을 끌어 올릴 것입니다.
@victorp가 제안하므로 difftime
가이 문제를 해결하는 방법입니다.
CR_Date$hours <- with(CR_Date, difftime(pos2,pos1,units="hours") )
CR_Date
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0.00 hours
#2 2014-07-01 2014-07-01 10:15:00 10.25 hours
. 다른 팁
당신은 또한 사용할 수 있습니다"as.double
방법"과 그 units
논증(참조) ?diffime
):
as.double
방법[as.double(x, units = "auto", ...)
]지정된 단위로 표현된 숫자 값을 반환합니다
...어디 x
이
클래스에서 상속되는 객체
"difftime"
당신의 예에 적용,어디 pos2 - pos1
이 결과로 difftime
개체:
CR_Date$hours <- as.double(CR_Date$pos2 - CR_Date$pos1, units = "hours")
CR_Date
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0.00
#2 2014-07-01 2014-07-01 10:15:00 10.25
또는 다른 units
:
as.double(CR_Date$pos2 - CR_Date$pos1, units = "mins")
#[1] 0 615
as.double(CR_Date$pos2 - CR_Date$pos1, units = "days")
#[1] 0.0000000 0.4270833