Conversione di script R in JMPCiao,
Non ho familiarità con R e ho lavorato con JMP (ancora principiante).Ho il codice R che devo convertire in script JMP.Ho chiamato JMP e mi hanno suggerito di postare qui per vedere se qualcuno può aiutarmi?
Il codice R è contenuto qui abcd_discrimination/demographics_baseline_clean.R su main · barzilab1/abcd_discrimination · GitHub
e ho il foglio dati in JMP, non ho idea di come convertire lo script.
C'è qualcuno che può aiutare?
Ho allegato il file in txt
Grazie in anticipo per il vostro aiuto.
Automazione e scriptingRi: Conversione di script R in JMPGRAZIE MILLE.Apprezzo il tuo tempo e il tuo aiuto!
Ri: Conversione di script R in JMPDovrei anche notare che un altro utente della comunità mi ha contattato e ha provato a eseguire il codice R, ma ha avuto alcuni errori; notando che la probabile causa principale dello script R scritto "così com'è" ha a che fare con impostazioni del percorso obsolete nei file di utilità.
@GraphicalScore9 Ti consiglio di contattare il proprietario del repository GIT o magari vedere se il file csv esiste già.Sfortunatamente, non è raro che il codice R smetta di funzionare (questo è uno dei problemi con il software open source che non hai con JMP o SAS).
Ri: Conversione di script R in JMPGrazie Marco! Questo è molto utile!
Per quanto riguarda alcune delle risorse che hai citato connesse alle funzioni R disponibili in JMP, volevo notare qui che un buon riferimento sarebbe anche la documentazione di supporto online: https://www.jmp.com/support/help/en/16.2/#page/jmp/import-data-from-r.shtml#
Tuo, Patrizio
Ri: Conversione di script R in JMPCiò che sta accadendo in questi passaggi è la pulizia dei dati. "demographics_set" è una tabella di dati simile a una tabella di dati JMP.
R utilizza la convenzione: insieme_demografico[righe,colonne]. Pertanto, quando hai la seguente riga sotto, viene applicata a tutte le righe poiché non c'è nulla tra parentesi a sinistra della virgola. Per la colonna "sex_br", assegna un valore di 1 per "F" e 0 per "M" (e qualsiasi cosa NON "F"). La logica è che (sesso == "F") restituisce 1 se VERO e 0 se FALSO. Il ":=" è un operatore di assegnazione a sinistra (infisso). R potrebbe non riconoscere questo operatore all'inizio, quindi potrebbe essere necessario eseguire la riga: `:=` <- `<-` prima del resto del codice. Questo assegna l'operatore di assegnazione più tipico ("<-") a ":=".
demographics_set[, sex_br := (sex == "F")*1]
Ecco un altro esempio in cui è presente un sottoinsieme di righe di seguito. Per le righe in cui "demo_ethn_v2" è uguale a "1", assegnare il valore 1 alla colonna "ethnicity_hisp".
demographics_set[demo_ethn_v2 == "1", ethnicity_hisp := 1]
La funzione is.na() seleziona le righe che non sono NA per la colonna tra parentesi.
Le funzioni as.character() e as.numeric() convertono la colonna in caratteri o in numeri come indicato. A volte è necessario convertire prima in carattere e poi in numerico, da qui le funzioni annidate che si verificano nel codice.
Dopo tutta questa pulizia dei dati, la seguente riga elimina i livelli di fattore che non sono più utilizzati a causa del sottoinsieme del frame di dati.
demographics_set = droplevels(demographics_set)
Detto questo, sono d'accordo con gli altri in quanto probabilmente sarebbe più facile per te incorporare questo codice R all'interno di uno script JMP e utilizzare le funzioni R per eseguire il codice R. Controlla l'indice di scripting in JMP nel menu Aiuto per trovare le funzioni R. Probabilmente avrai bisogno di R Init() per inizializzare la connessione a R, R Send() per avvolgere qualsiasi file o variabile che vuoi inserire nel codice R, R Submit() per avvolgere il tuo codice R, R Get( ) per recuperare l'output da R in JMP (o R Get Graphics() se stai recuperando un oggetto grafico) e R Term() per terminare l'interfaccia R. Sembra più complicato di quello che è, ma probabilmente è ancora più facile che riscrivere tutto il codice R come JSL (linguaggio di scripting JMP). L'indice di scripting ha alcuni bei esempi per aiutarti.
Ri: Conversione di script R in JMP@GraphicalScore9 , Grazie per aver reso le tue domande più specifiche qui.Questo potrebbe essere di aiuto in generale: Generatore di componenti aggiuntivi da JMP a R - Comunità di utenti di JMP .
@txnelson , È qualcosa con cui puoi dare una mano?La logica con script nell'editor di formule è semplice da comprendere in JMP per i non scripter - sembra che ciò di cui l'utente ha bisogno qui sia un'interpretazione di base della logica per creare questi nuovi nomi di variabili dal codice sorgente R qui - quindi da lì, se è un utente JMP che ha familiarità con le formule di colonna (all'interno dell'editor di script o dell'editor di formule), dovrebbe essere abbastanza banale da implementare all'interno dell'ambiente della tabella di dati JMP.
Ri: Conversione di script R in JMPSalve a tutti, sto cercando di rendere la mia richiesta un po' più specifica e incentrata su JMP. Dal seguente codice R generato dai dati accompagnati, qualcuno può spiegarmi la logica di ciò che sta facendo R nel creare queste nuove variabili dai dati grezzi? Intendo riprodurre queste nuove variabili sui dati grezzi in JMP utilizzando le formule di colonna.In particolare, questa riga da 23 a riga 114 del codice R allegato: abcd_discrimination/demographics_baseline_clean.R su main · barzilab1/abcd_discrimination · GitHub
########### sex
#convert the NIH sex at birth (equal to demo_sex_v2)
demographics_set[, sex_br := (sex == "F")*1]
demographics_set[,demo_sex_v2 := NULL]
########### age
#interview age will be used instead of age
demographics_set[,demo_brthdat_v2:=NULL]
demographics_set[, age := as.numeric(as.character(interview_age))]
########### gender
demographics_set[,gender := as.numeric(as.character(demo_gender_id_v2))]
demographics_set[(gender %in% c(777,999)) ,gender := NA]
demographics_set[, gender:= gender-1]
demographics_set[, demo_gender_id_v2:= NULL]
########### ethnicity
demographics_set[demo_ethn_v2 == "1", ethnicity_hisp := 1]
demographics_set[demo_ethn_v2 == "2", ethnicity_hisp := 0]
demographics_set[(demo_ethn_v2 %in% c(777,999)), ethnicity_hisp:= NA]
demographics_set = demographics_set[, demo_ethn_v2 := NULL]
########### child race
#"refuse to answer" and "dont know" will be 0
# White
demographics_set[, race_white:= (demo_race_a_p___10 == "1")*1 ]
# Black
demographics_set[, race_black:= (demo_race_a_p___11 == "1")*1 ]
# Asian
demographics_set[, race_asian:= 0]
demographics_set[ (demo_race_a_p___18 == "1" | demo_race_a_p___19 == "1" | demo_race_a_p___20 == "1" |
demo_race_a_p___21 == "1" | demo_race_a_p___22 == "1" | demo_race_a_p___23 == "1" |
demo_race_a_p___24 =="1"), race_asian:= 1 ]
# AIAN: American Indian and Alaska Native
demographics_set[, race_aian:= 0]
demographics_set[ (demo_race_a_p___12 == "1" | demo_race_a_p___13 == "1"), race_aian:=1 ]
#NHPI: Native Hawaiian and Other Pacific
demographics_set[, race_nhpi:= 0]
demographics_set[ demo_race_a_p___14 == "1" | demo_race_a_p___15 == "1" | demo_race_a_p___16 == "1" |
demo_race_a_p___17 == "1", race_nhpi:= 1 ]
# Other
demographics_set[, race_other:= 0 ]
demographics_set[ demo_race_a_p___25 == "1", race_other:= 1 ]
# Mixed
demographics_set[, race_mixed:= (race_white + race_black + race_asian + race_aian + race_nhpi + race_other)]
demographics_set[, table(race_mixed, useNA = "if")]
demographics_set[ race_mixed <= 1, race_mixed:= 0]
demographics_set[ race_mixed > 1, race_mixed:= 1]
demographics_set[, table(race_mixed, useNA = "if")]
demographics_set[,colnames(demographics_set)[(grepl("^demo_race_a_p___",colnames(demographics_set)))] := NULL]
########### child's country of birth
demographics_set[, born_in_usa := 0]
demographics_set[demo_origin_v2 %in% c(777,999), born_in_usa := NA]
demographics_set[demo_origin_v2 == 189, born_in_usa := 1]
########### parents education
demographics_set[(demo_prnt_ed_v2 %in% c(777,999)), demo_prnt_ed_v2:= NA]
demographics_set[(demo_prtnr_ed_v2 %in% c(777,999)), demo_prtnr_ed_v2:= NA]
demographics_set[, parents_avg_edu:= (as.numeric(as.character(demo_prnt_ed_v2)) + as.numeric(as.character(demo_prtnr_ed_v2)))/2]
#in case of edu is missing in one of the parents, it will be the edu the of other parent
demographics_set[is.na(parents_avg_edu), parents_avg_edu:= as.numeric(as.character(demo_prnt_ed_v2))]
demographics_set[is.na(parents_avg_edu), parents_avg_edu:= as.numeric(as.character(demo_prtnr_ed_v2))]
########### family income
demographics_set[,household_income:= demo_comb_income_v2]
demographics_set[( household_income %in% c(777,999)) ,household_income:= NA]
demographics_set[,demo_comb_income_v2 := NULL]
########### parents married status
demographics_set[demo_prnt_marital_v2 == 777 , demo_prnt_marital_v2:= NA]
demographics_set[,separated_or_divorced := 0]
demographics_set[(demo_prnt_marital_v2 %in% c(3,4)), separated_or_divorced := 1]
demographics_set[,parents_married := 0]
demographics_set[(demo_prnt_marital_v2 == 1), parents_married := 1]
demographics_set = droplevels(demographics_set)
Ri: Conversione di script R in JMPPotrebbe essere più semplice utilizzare JMP come front-end e chiamare il programma R esistente da JSL (JMP Script Language).