2017-03-14 3 views
0

다음 코드를 사용하여 데이터 집합을 정리했습니다.오류 : 원본을 제공해야합니다.

data1 <- data1 %>% 
    mutate(YEAR = year(DATE), 
     MONTH = month(DATE), 
     DAY=day(DATE), 
     HOUR=hour(TIME), 
     MINUTE = minute(TIME), 
     RETURN= ((PRICE-lag(PRICE))/lag(PRICE)) 
) %>% 
    filter(HOUR >= 9, (HOUR <= 16 & MINUTE <=61)) %>% 
    group_by(MINUTE, HOUR, DAY, MONTH, YEAR) %>% 
    summarize(AV.PRICE = mean(PRICE, na.rm=TRUE), 
      SUM.SIZE=sum(SIZE, na.rm=TRUE), 
      RV=sum(RET^2)) %>% 
    arrange(YEAR, MONTH, DAY, HOUR, MINUTE) %>% 
    mutate(DATETIME = as.POSIXct(
    paste(YEAR,"/",MONTH,"/", DAY, " ", HOUR,":", MINUTE,":00",sep=""), 
    format="%Y/%m/%d %H:%M:%S", origin = "1970-01-01") 
) 

그러나, 때때로 나에게 오류 메시지를 제공합니다 : Error: 'origin' must be supplied 오류가 나는 세션에서이 코드를 실행 처음에 표시되지 않습니다,하지만 후속 실행에 나타나는 어떤 이상한

. 세션을 다시 시작하면 문제가 한 번 사라지고 나중에 실행됩니다. 그러므로 나는 항상 그것을 작동시키기 위해서 다시 시작해야만한다.

질문을 확인했습니다 : How to solve: "Error in as.POSIXct.numeric(X[[2L]], ...) : 'origin' must be supplied" 이는 정수에서 시간으로 변환 중이기 때문일 수 있습니다. 그러나 데이터의 glimpse은 DATE가 <date> 클래스이고 정수가 아님을 보여줍니다.

하는 것은 안전을 위해 : 나는 오류의 제안을 따라 날짜를 다루는 모든 기능에 기원 = "1970-01-01"인수를 추가 :

data1 <- data1 %>% 
    mutate(YEAR = year(DATE, origin = "1970-01-01"), 
     MONTH = month(DATE, origin = "1970-01-01"), 
     DAY=day(DATE, origin = "1970-01-01"), 
     HOUR=hour(TIME, origin = "1970-01-01"), 
     MINUTE = minute(TIME, origin = "1970-01-01"), 
     RET= ((PRICE-lag(PRICE))/lag(PRICE)) 
) %>% 
    filter(HOUR >= 9, (HOUR <= 16 & MINUTE <=61)) %>% 
    group_by(MINUTE,HOUR,DAY,MONTH,YEAR) %>% 
    summarize(AV.PRICE = mean(PRICE, na.rm=TRUE), 
      SUM.SIZE=sum(SIZE, na.rm=TRUE), 
      RV=sum(RET^2) 
) %>% 
    arrange(YEAR, MONTH, DAY, HOUR, MINUTE) %>% 
    mutate(DATETIME = as.POSIXct(
    paste(YEAR,"/",MONTH,"/", DAY, " ", HOUR,":", MINUTE,":00",sep=""), 
    format="%Y/%m/%d %H:%M:%S", origin = "1970-01-01") 
) 

을 그리고 Error: unused argument (origin = "1970-01-01")

을 반환 나는 기본 패키지 기능 또는 대부분 lubridate/dplyr에서를 사용하여 대답을 찾고 있어요

Observations: 146,016,609 
Variables: 4 
$ DATE <date> 2008-01-02, 2008-01-02, 2008-01-02, 2008-01-02, 2008-01-02, 2008-01-02, 2008-01-02, ... 
$ TIME <S4: Period> 9H 0M 4S, 9H 0M 4S, 9H 0M 4S, 9H 0M 4S, 9H 0M 4S, 9H 0M 4S, 9H 0M 4S, 9H 0M 4S... 
$ PRICE <dbl> 146.86, 146.86, 146.86, 146.86, 146.86, 146.86, 146.86, 146.86, 146.86, 146.86, 146.8... 
$ SIZE <int> 1000, 1000, 1000, 500, 2400, 1000, 1000, 1000, 2500, 1000, 1000, 400, 1000, 1000, 100... 

: 도움이된다면

, 여기에 내 데이터 세트의 한 단면이다. 감사! 언제 패키지에서

답변

1

또는 사용 anydate() : 형식 (anytime()과 날짜) 가장 (제정신) 날짜를 추측하지 ---과 (대부분 중복) 기원에 대한 요구 사항을 포함하여

R> anydate(20170314L) # integer 
[1] "2017-03-14" 
R> anydate(20170314) # numeric 
[1] "2017-03-14" 
R> anydate("20170314") # character 
[1] "2017-03-14" 
R> anydate(as.factor("20170314")) 
[1] "2017-03-14" 
R> 

및 훨씬 더.

편집 : 데이터가 주어지면 복잡해집니다. 이 시도 :

최소 data.frame 객체
R> df <- data.frame(DATE=rep(as.Date("2008-01-02"),4), TIME=rep(period(c(9,0,4), c("hour", "minute", "second")), 4)) 
R> df 
     DATE  TIME 
1 2008-01-02 9H 0M 4S 
2 2008-01-02 9H 0M 4S 
3 2008-01-02 9H 0M 4S 
4 2008-01-02 9H 0M 4S 
R> 
그냥 날짜 및 시간
R> df$DATE + df$TIME 
[1] "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" 
R> class(df$DATE + df$TIME) 
[1] "POSIXlt" "POSIXt" 
R> as.POSIXct(df$DATE + df$TIME) 
[1] "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" "2008-01-02 09:00:04 UTC" 
R> 

그리고 당신의 응답이를 추가합니다.

+0

안녕하세요, 귀하의 패키지를 시험해 보았습니다. 더 이상 기점 오류가 발생하지 않지만 DATETIME은 NAs가됩니다. 코드에 대한 수정 된 질문을 참조하십시오. 나는 당신의 패키지에 익숙하지 않아서, 내가 뭔가 기본적인 것을 보지 못해서 미안해. – shoestringfries

+0

사용 가능한 모든 형식으로 입력을 분석 할 수 없을 때'anytime()'또는'anydate()'에서 NA를 얻습니다. 사용자 정의 형식을 추가 할 수 있습니다. 패키지 도움말을 참조하십시오. –

0

lubridate 패키지 - hms() 기능을 사용하는 동안 '오류 :'원점 '을 입력해야합니다'라는 오류가 발생했습니다. cuplrit는 코드가 hms 패키지의 hms() 함수를 참조하고 있다는 것이 었습니다. 그래서 lubridate :: hms()를 참조했을 때 오류가 사라졌습니다.

air_reserve < % mutate (Reserve.time = lubridate :: hms (Reserve.time), Visit.time = lubridate :: hms (Visit.time), Hours = lubridate :: hour (Visit. 시각)).

+0

[코드 블록 사용법] (http://stackoverflow.com/editing-help)을 읽어보십시오. –

관련 문제