2017-09-18 16 views
0

Meine Frage ist in zwei Teile gegliedert:R - Datum/Uhrzeit Berechnungen

1. Teil:

ich eine Funktion haben, getdata() die ich Informationen für einen Datumsbereich zu ziehen, verwenden.

get_data <- function (fac_num, start_date, end_date) { 

    if (!(is.null(fac_num) | is.null(start_date) | is.null(end_date))) { 

    if(end_date - start_date > 7) { 
    start_date <- end_date - 7 

    #start_date <- as.Date('2017-07-05') 
    #end_date <- as.Date('2017-07-06') 
    #fac_num <- "005" 
    } 

    new_start_date <- paste0(start_date,' 05:00:00') 
    new_end_date <- paste0(end_date + 1,' 05:00:00') 


    qry <- paste0("SELECT FAC_NUM, USER_ID, APPL_ID, FUNC_ID, ST_ID, NXT_ST_ID, RESP_PRMT_DATA, 
       ST_DT_TM, END_DT_TM, RESP_PRMT_TY_CDE, 
       REQ_INP_DATA FROM OPSDBA.STG_RFS_INTERACTION WHERE TRANS_ST_DT_TM >= DATE'", 
       start_date,"' AND TRANS_ST_DT_TM BETWEEN TO_TIMESTAMP('",new_start_date,"', 'YYYY-MM-DD HH:MI:SS') AND TO_TIMESTAMP('",new_end_date,"', 'YYYY-MM-DD HH:MI:SS') 
       AND APPL_ID='CTS' AND FAC_NUM='",fac_num,"'") 

und dann führe ich Berechnungen darauf durch.

Weiter in meinem Programm. Ich verwende diese getdata() Funktion, um Daten für eine neue Reihe von Analysen zu ziehen.

rf_log_perform <- get_data(display_facility_decode(input$facNum2), 
input$dateRange2, input$dateRange2 + 1) 

Hier seit ich statt Bereich nur ein einzelnes Datum verwende, habe ich eine in das Programm aufgenommen, so dass die getdata() Funktion funktionieren würde.

Ich wollte dann den Datumsbereich so ändern, dass es für das ausgewählte Datum nichts nach 11:59 zeigt.

rf_log_perform$date <- ifelse(strftime(rf_log_perform$st_dt_tm, format="%H:%M:%S")<'05:00:00', 
    format(as.POSIXct(strptime(rf_log_perform$st_dt_tm - 1*86400 , '%Y-%m-%d %H:%M:%S')),format = '%Y-%m-%d'), 
    format(as.POSIXct(strptime(rf_log_perform$st_dt_tm , '%Y-%m-%d %H:%M:%S')),format = '%Y-%m-%d')) 

Durch die Verwendung der getdata() Funktion, ich wäre in der Lage Daten für Datumsbereich 2017.08.29, ziehen 05.00.00 bis 2017.08.30, 05.00.00, die in Betracht gezogen wird, sei ein Tag in meinem Beispiel.

Aber für meine Berechnungen möchte ich alles, was über 08/29/2017, 23:59:59 PM hinausgeht, für genauere Ergebnisse verwerfen. Zu diesem Zweck habe ich eine ifelse Anweisung hinzugefügt, um das zu sortieren. Aber das ist nicht so, wie ich es erwarte und ich bin verwirrt warum nicht.

+0

Was genau ist das Problem/die Frage? – Dave2e

Antwort

0

Leider kann ich die Hauptfrage immer noch nicht kommentieren.

Ich ermutige Sie zwei Anpassungen auf Ihre Frage zu machen, die Chancen zu verbessern, auf eine Antwort auf Ihre Frage bekommen:

1) Bitte Ihr Beispiel reproduzierbar machen z.B. Stellen Sie Ihren Code in eine gut definierte Funktion usw. ein.

2) Erklären Sie, was Sie zu erreichen versuchen. Was ist Ihre Absicht und erwartetes Ergebnis?

+0

Heyy Christian, ich habe ein paar Änderungen an der Frage vorgenommen und weitere Informationen hinzugefügt. Bitte antworten Sie, wenn zum besseren Verständnis noch etwas hinzugefügt werden muss. –