Come inviare date come caratteri da JMP a RTutti,
Sto cercando di sfruttare alcune funzioni di finanza esistenti in R. Le funzioni richiedono che le date vengano passate come carattere. Qualcuno può guidarmi su come passare le date in un formato accettabile per R da JMP.
@ih ( Menzione speciale)
# Working R Code
library(tvm)
CF1 <- c(-100,20,40,25,8,15)
d1 <- as.Date(c("2016-01-01","2016-04-01","2016-10-01","2017-02-01","2017-03-01","2017-06-01"))
Res <- vector()
Res <- sapply(1:length(d1), function(i) {xnpv(i,CF1[i:length(CF1)],d1[i:length(d1)])})Mi piacerebbe fare la stessa identica cosa - eccetto che gli input dovranno essere passati da JMP a R.
Il flusso di cassa (CF1) è un vettore dritto e non ha problemi nel passare, tuttavia le date sono la parte difficile.
Funzione XNPV in R se non sono richiesto che le date siano formattate come carattere mostrato sopra.
Anche se, modifico le date come carattere in JMP, ma quando le passo a RI non penso che siano state passate correttamente.
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
- Questo genera un errore - "as.Date.default (DatesInJMP)" - non so come convertire in classe "Date"
Ri: Come inviare date come caratteri da JMP a RDa? As.Date in R:
Il <FONT face="Courier New"> as.Date </FONT> i metodi accettano stringhe di caratteri, fattori logici <FONT face="Courier New"> N / A </FONT> e oggetti di classi <FONT face="Courier New"> " </FONT><A href="http://127.0.0.1:46214/help/library/base/help/POSIXlt" target="_blank" rel="nofollow noopener noreferrer"><FONT face="Courier New"> POSIXlt </FONT></A><FONT face="Courier New"> " </FONT> e <FONT face="Courier New"> " </FONT><A href="http://127.0.0.1:46214/help/library/base/help/POSIXct" target="_blank" rel="nofollow noopener noreferrer"><FONT face="Courier New"> POSIXct </FONT></A><FONT face="Courier New"> " </FONT>
DatesInJMP si presenta come un elenco di stringhe anziché un vettore stringa. Il codice sottostante lo verifica, quindi corregge il problema eseguendo prima il cast di un vettore di caratteri.
Tieni presente che puoi anche inviare date e orari come numeri, devi solo tenere conto della mancanza di un fuso orario in JMP importando il valore come UTC. Potresti quindi compensare l'ora locale se necessario; Faccio quel genere di cose con il lubridato. Oppure potresti fare quell'offset in JMP prima di inviarlo a R.
Names default to here( 1 );
DatesInJMP = { "2017-01-01", "2017-01-02", "2017-01-03" };
R Init();
R Send( DatesInJMP );
R Submit( "str(DatesInJMP)");
R Submit( "dt <- as.Date(as.character(DatesInJMP))" );
Write("\!N"); //New line so log is easier to read
R Submit( "str(dt)");
Write("\!N");
//Send a number instead
JMPTime = num( Today() );
R Send( JMPTime );
R Submit( "Date_POSIX <- as.POSIXct( JMPTime, origin = '1904-01-01', tz = 'GMT')");
R Submit( "Date_ <- as.Date( Date_POSIX )");
R Submit( "str( Date_POSIX )");
R Submit( "str( Date_ )");
R Term();
Modificato di correggere la formattazione avvitata dal tentativo di modificare il codice in questa finestra ..
Ri: Come inviare date come caratteri da JMP a R @txnelson ,
Il secondo pezzo di codice che ho condiviso cioè è in JSL e non R.
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
Questo è il mio tentativo di visualizzare le date che passano da JMP a R. Quando invoco R da JMP, un'istanza di R non è aperta, quindi non sono sicuro di come testare ciò che R sta vedendo diverso dal recuperarlo in JMP come provo sopra. Ogni argomento viene passato separatamente da JMP a R come mostrato di seguito:
# JSL CODE
R Send(DatesInJMP);
R Send(CashFlow);
R Submit("
d1 <- as.Date(DatesInJMP)
"
);
R Get(d1);
Ri: Come inviare date come caratteri da JMP a RHai visualizzato in R la lista che hai passato in modo da poter vedere cosa ha ricevuto R? È possibile modificare il codice R originale in un elenco separato e quindi passarlo come si sta tentando di fare nella versione modificata del codice R, per JMP?
Ri: Come inviare date come caratteri da JMP a RHey Jim,
Ho formattato le date come caratteri prima di passare a R. Sono formattate come un elenco di date di caratteri.
La formula che ho usato per formattarli sono:
(Char (Format (: PeriodEnding, "y / m / d")))Ri: Come inviare date come caratteri da JMP a RUday,
Le date in JMP sono numeriche. L'elenco di cui hai bisogno nel tuo codice R è un elenco di stringhe. È necessario utilizzare la funzione Format () per creare un nuovo elenco in JMP in cui sono stati tradotti i valori numerici nell'elenco, ai valori dei caratteri nella stringa, prima di passarli a R