2017-01-27 2 views
1

내가 R에 ISO 8601 날짜 시간의 특정 형식에 문제가 있어요 - 예 : 지금까지R/세일즈 포스 날짜 시간 통합

2016-12-28T13:00:56.000Z 
2016-12-28T13:03:10.000Z 
2016-12-28T13:08:26.000Z 
2016-12-28T13:13:00.000Z 
2016-12-28T13:34:49.000Z 
2016-12-28T13:42:44.000Z 
2016-12-28T13:51:43.000Z 
2016-12-28T13:52:30.000Z 
2016-12-28T13:53:03.000Z 

, 나는 구문 분석 lubridate를 사용하여 성공하지 않았으며 난 regex을 먼저 사용하여 T/Z를 제거하십시오. 아니면 strptime으로 할 수있는 것이 있습니까? 그것은 옵션이 될 수도 있습니다. 이상적으로,이 인스턴스의 목록/벡터의 모든 인스턴스에 대한 파이프 것 : 여기

df %>% 
select(datetime) %>% 
sapply(as.character) %>% 
parse_date_time('YmdHMS') -> df$datetime 

실제 문제는 내 오브젝트 유형이 목록 처음이었다입니다 - unlist 여러 가지 분석 방법이 바로 일 후. 항상 당신의 객체 유형을 감시하십시오!

+0

내가 구문 분석 오류가 발생하지 않았다'D <- "2016-12-28T13 : 00 : 56.000Z"'parse_date_time (D, 'YMDhms와')'와'# [1] " 2016-12-28 13:00:56 UTC ". 나는 중간에있는 "T"가 걸림돌 이었지만 그 문제는 아닌 것 같았습니다. dplyr 또는 magrittr 패키지를로드하지 못했습니까? (또한 오류가 없습니다 :'d %> % sapply (as.character) %> % parse_date_time ('YmdHMS') –

답변

3

그냥 (를 지정할 필요없이) 그것은 바로 많은 형식을 가져옵니다 anytime()로 스틱 확실히 ISO 8601와 함께 작동하십시오 NOT-에 표시된 당신의 데이터를 할당

R> tvec <- read.csv(text="2016-12-28T13:00:56.000Z 
2016-12-28T13:03:10.000Z 
2016-12-28T13:08:26.000Z 
2016-12-28T13:13:00.000Z 
2016-12-28T13:34:49.000Z 
2016-12-28T13:42:44.000Z 
2016-12-28T13:51:43.000Z 
2016-12-28T13:52:30.000Z 
2016-12-28T13:53:03.000Z", header=FALSE)[,1] 
R> 

(너무 재현 할 수있는 형식). 그런 다음 :

R> library(anytime)  ## load package, and we're basically done 
R> anytime(tvec) 
[1] "2016-12-28 13:00:56 CST" "2016-12-28 13:03:10 CST" "2016-12-28 13:08:26 CST" 
[4] "2016-12-28 13:13:00 CST" "2016-12-28 13:34:49 CST" "2016-12-28 13:42:44 CST" 
[7] "2016-12-28 13:51:43 CST" "2016-12-28 13:52:30 CST" "2016-12-28 13:53:03 CST" 
R> 
+0

나는 이것을 간과했다고 생각할 수 없다. 환상적인 도서관이 분명히 나의 갈망이 될 것이다. 날짜 시간 입력 – gscott

+0

도움이 되니 기쁩니다. (6 개월 미만) 꽤 새롭지 만 지금은 매일 사용하고 있습니다. 오랫동안 그것을 좋아하고 싶었습니다. –