2015-10-29 13 views
7

Tutte le date che ho manipolato nel modulo Execute R in Azure Machine Learning scrivono come vuote nell'output, ovvero, queste esistono colonne di date, ma non c'è alcun valore in quelle colonne.Come definire il fuso orario corrente in Azure ML per la funzione strptime, fuso orario sconosciuto 'localtime'

Le variabili di origine che contengono informazioni di data che sto leggendo nel frame di dati hanno due diversi formati di data. Essi sono i seguenti:

usage$Date1=c(‘8/6/2015’ ‘8/20/2015’ ‘7/9/2015’) 
usage$Date2=c(‘4/16/2015 0:00’, ‘7/1/2015 0:00’, ‘7/1/2015 0:00’) 

ho controllato il file di log in AML, e AML non riesce a trovare il fuso orario locale. Gli avvisi del file di registro in particolare: [ModuleOutput] 1: In strptime (x, format, tz = tz): [ModuleOutput] impossibile identificare il fuso orario corrente 'C': [ModuleOutput], impostare la variabile di ambiente 'TZ' [ ModuleOutput] [ModuleOutput] 2: In strptime (x, format, tz = tz): sconosciuto fuso orario 'localtime'

ho fatto riferimento ad un'altra risposta per quanto riguarda il fuso orario impostazione predefinita per strptime qui

unknown timezone name in R strptime/as.POSIXct

Ho cambiato il mio codice per definire esplicitamente il tempo dell'ambiente globale variabile.

Sys.setenv(TZ='GMT') 


####Data frame usage cleanup, format and labeling 
usage<-as.data.frame(usage) 
usage$Date1<-as.character(usage$Date1) 
usage$Date1<-as.POSIXct(usage$Date1, "%m/%d/%Y",tz="GMT") 
usage$Date1<-format(usage$Date1, "%m/%d/%Y") 
usage$Date1<-as.Date(usage$Date1, "%m/%d/%Y") 
usage<-as.data.frame(usage) 

usage$Date2<- as.POSIXct(usage$Date2, "%m/%d/%Y",tz="GMT") 
usage$Date2<- format(usage$Date2,"%m/%d/%Y") 
usage$Date2<-as.Date(usage$Date2, "%m/%d/%Y") 
usage<-as.data.frame(usage) 

il problema persiste -come risultato AzureML non scrive queste variabili fuori, piuttosto scrivendo queste colonne come spazi vuoti.
(. Questo codice funziona in studio R, dove presumo l'ora locale viene preso dal sistema)

Dopo aver letto due post di blog su questo problema, sembra che Azure ML non supporta alcuni formati di ora Data:

http://blogs.msdn.com/b/andreasderuiter/archive/2015/02/03/troubleshooting-error-1000-rpackage-library-exception-failed-to-convert-robject-to-dataset-when-running-r-scripts-in-azure-ml.aspx

http://www.mikelanzetta.com/2015/01/data-cleaning-with-azureml-and-r-dates/

così ho cercato di convertire in POSIXct prima di inviarlo nel flusso di output, che ho fatto nel modo seguente: tenantusage $ Data1 = as.POSIXct (tenantusage $ Date1, "% m /% d /% Y", tz = "EST5EDT"); tenantusage $ Date2 = as.POSIXct (tenantusage $ Date2, "% m /% d /% Y", tz = "EST5EDT");

Ma incontrare lo stesso problema. Le informazioni in queste variabili si rifiutano di scrivere sull'output. Le colonne Date1 e Date2 sono vuote.

Si prega di avvisare!

grazie

+0

Ottenere lo stesso errore, non è possibile trovare alcuna soluzione alternativa – SochiX

risposta

0

Hi SingingData e SochiX,

Mi dispiace per questa fonte di frustrazione! Trovo che la seguente variazione sul codice di esempio di SingingData funziona per me (testato in un modulo CRAN 3.1.0):

usage <- data.frame(list(Date1 = c('8/6/2015', '8/20/2015', '7/9/2015'), 
         Date2 = c('4/16/2015 0:00', '7/1/2015 0:00', '7/1/2015 0:00'))) 
usage$Date1 <- as.POSIXlt(usage$Date1, "%m/%d/%Y",tz="GMT") 
usage$Date2 <- as.POSIXlt(usage$Date2, "%m/%d/%Y",tz="GMT") 

usage$Date1 <- format(usage$Date1, "%m/%d/%Y") 
usage$Date2 <- format(usage$Date2,"%m/%d/%Y") 

usage$Date1 <- as.Date(usage$Date1, "%m/%d/%Y") 
usage$Date2 <- as.Date(usage$Date2, "%m/%d/%Y") 

maml.mapOutputPort("usage"); 

Ho usato as.POSIXlt() invece di as.POSIXct(). Spero che questo aiuti a sbloccare il tuo lavoro in R.