2015-10-29 9 views
7

Wszystkie te daty, które zmanipulowałem w module Execute R w uczeniu maszynowym Azure, wypisz jako puste w wynikach - to znaczy istnieją kolumny daty, ale w tych kolumnach nie ma wartości.Jak zdefiniować bieżącą strefę czasową w usłudze Azure ML dla funkcji strptime, nieznana strefa czasowa "czas lokalny"

Zmienne źródłowe, które zawierają informacje o dacie, które odczytuję w ramce danych, mają dwa różne formaty daty. Są one następujące:

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’) 

Sprawdziłem plik dziennika w AML, a AML nie może znaleźć lokalnej strefy czasowej. Ostrzeżenia dotyczące pliku dziennika w szczególności: [ModuleOutput] 1: W strptime (x, format, tz = tz): [ModuleOutput] nie można zidentyfikować bieżącej strefy czasowej "C": [ModuleOutput] proszę ustawić zmienną środowiskową "TZ" [ ModuleOutput] [ModuleOutput] 2: W strptime (x, format, tz = tz): nieznany czasowej 'localtime'

odniosłem innej odpowiedzi dotyczące domyślnym ustawieniem strefy czasowej dla strptime tutaj

unknown timezone name in R strptime/as.POSIXct

Zmieniłem swój kod, aby wyraźnie określić globalny czas środowiska zmienna.

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) 

Problem nadal występuje - w wyniku tego AzureML nie zapisuje tych zmiennych, raczej wypisując te kolumny jako puste.
(Ten kod działa w systemie R Studio, w którym zakładam, że czas lokalny pobierany jest z systemu.)

Po przeczytaniu dwóch wpisów na blogu dotyczących tego problemu wydaje się, że usługa Azure ML nie obsługuje niektórych formatów daty:

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/

Więc próbowałem konwertować do POSIXct przed wysłaniem go do strumienia wyjściowego, co mam zrobić w następujący sposób: tenantusage $ Data wprowadzenia1 = as.POSIXct (tenantusage $ date1, "% m /% d /% Y", tz = "EST5EDT"); tenantusage $ Date2 = as.POSIXct (tenantusage $ Date2, "% m /% d /% Y", tz = "EST5EDT");

Ale napotkasz ten sam problem. Informacje w tych zmiennych nie pozwalają wypisać na wyjście. Kolumny Date1 i Date2 są puste.

Proszę doradzić!

dzięki

+0

Uzyskanie tego samego błędu, nie można znaleźć obejścia – SochiX

Odpowiedz

0

Hi SingingData i SochiX,

Przykro mi z powodu tego źródła frustracji! Uważam, że po odmianą kodu próbki SingingData za prace dla mnie (testowane w CRAN module 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"); 

Użyłem as.POSIXlt() zamiast as.POSIXct(). Mam nadzieję, że pomoże to odblokować twoją pracę w R.

Powiązane problemy