Conversion de R en script JMPBonjour,
Je ne connais pas R et j'ai travaillé avec JMP (encore débutant).J'ai du code R que je dois convertir en script JMP.J'ai appelé JMP et ils m'ont suggéré de poster ici pour voir si quelqu'un pouvait m'aider ?
Le code R est contenu ici abcd_discrimination/demographics_baseline_clean.R à main · barzilab1/abcd_discrimination · GitHub
et j'ai la fiche technique dans JMP, mais je ne sais pas comment convertir le script.
Y a-t-il quelqu'un qui peut aider?
je joins le fichier en txt
Merci d'avance pour votre aide.
Automatisation et scriptRe : Convertir un script R en JMPMERCI BEAUCOUP.J'apprécie votre temps et votre aide!
Re : Convertir un script R en JMPJe dois également noter qu'un autre utilisateur de la communauté m'a contacté et a essayé d'exécuter le code R, mais a rencontré des erreurs ; notant que la cause première probable du script R écrit "tel quel" est liée à des paramètres de chemin obsolètes dans les fichiers utilitaires.
@GraphicalScore9 Je vous recommande de contacter le propriétaire du référentiel GIT ou peut-être de voir si le fichier csv existe déjà.Malheureusement, il n'est pas rare que le code R cesse de fonctionner (c'est l'un des problèmes avec les logiciels open source que vous n'avez pas avec JMP ou SAS).
Re : Convertir un script R en JMPMerci Marc ! C'est très utile!
En ce qui concerne certaines des ressources que vous avez mentionnées liées aux fonctions R disponibles dans JMP, je voulais noter ici qu'une bonne référence serait également la documentation de support en ligne : https://www.jmp.com/support/help/en/16.2/#page/jmp/import-data-from-r.shtml#
Bien à vous Patrick
Re : Convertir un script R en JMPCe qui se passe dans ces étapes est le nettoyage des données. "demographics_set" est une table de données similaire à une table de données JMP.
R utilise la convention : ensemble_démographique[lignes, colonnes]. Par conséquent, lorsque vous avez la ligne suivante ci-dessous, elle est appliquée à toutes les lignes car il n'y a rien à l'intérieur des crochets à gauche de la virgule. Pour la colonne "sex_br", il attribue une valeur de 1 pour "F" et 0 pour "M" (et tout ce qui N'EST PAS "F"). La logique est que (sex == "F") renvoie 1 si VRAI et 0 si FAUX. Le ":=" est un opérateur d'affectation gauche (infixe). R peut ne pas reconnaître cet opérateur au début, vous devrez donc peut-être exécuter la ligne : `:=` <- `<-` avant le reste du code. Cela affecte l'opérateur d'affectation plus typique ("<-") à ":=".
demographics_set[, sex_br := (sex == "F")*1]
Voici un autre exemple où il y a un sous-ensemble de lignes ci-dessous. Pour les lignes où "demo_ethn_v2" est égal à "1", attribuez la valeur 1 à la colonne "ethnicity_hisp".
demographics_set[demo_ethn_v2 == "1", ethnicity_hisp := 1]
La fonction is.na() sélectionne les lignes qui ne sont pas NA pour la colonne entre parenthèses.
Les fonctions as.character() et as.numeric() convertissent la colonne en caractère ou numérique comme indiqué. Parfois, vous devez d'abord convertir en caractère, puis en numérique, d'où les fonctions imbriquées qui se produisent dans le code.
Après tout ce nettoyage des données, la ligne suivante supprime les niveaux de facteurs qui ne sont plus utilisés en raison du sous-ensemble du bloc de données.
demographics_set = droplevels(demographics_set)
Cela dit, je suis d'accord avec les autres sur le fait qu'il serait probablement plus facile pour vous d'intégrer ce code R dans un script JMP et d'utiliser les fonctions R pour exécuter le code R. Consultez l'index de script dans JMP sous le menu Aide pour trouver les fonctions R. Vous aurez probablement besoin de R Init() pour initialiser la connexion à R, R Send() pour envelopper tout fichier ou variable que vous souhaitez entrer dans le code R, R Submit() pour envelopper votre code R, R Get( ) pour récupérer la sortie de R dans JMP (ou R Get Graphics() si vous récupérez un objet graphique), et R Term() pour terminer l'interface R. Cela semble plus compliqué qu'il ne l'est, mais probablement toujours plus facile que de réécrire tout le code R en JSL (langage de script JMP). L'index de script contient de bons exemples pour vous aider.
Re : Convertir un script R en JMP@GraphicalScore9 , Merci d'avoir précisé vos questions ici.Cela pourrait être utile en général: Générateur de compléments JMP vers R - Communauté d'utilisateurs JMP .
@txnelson , Est-ce quelque chose que vous pouvez aider ?La logique scriptable dans l'éditeur de formule est simple à comprendre dans JMP pour le non-scripteur - il semble que ce dont l'utilisateur a besoin ici est une interprétation de base de la logique pour créer ces nouveaux noms de variables à partir du code source R ici - puis à partir de là, s'il s'agit d'un utilisateur JMP familiarisé avec les formules de colonne (dans l'éditeur de script ou l'éditeur de formule), il devrait être assez simple de l'implémenter dans l'environnement de table de données JMP.
Re : Convertir un script R en JMPBonjour à tous, J'essaie de rendre ma demande un peu plus spécifique et centrée sur JMP. À partir du code R suivant généré à partir des données accompagnées, quelqu'un peut-il m'expliquer la logique de ce que fait R en créant ces nouvelles variables à partir des données brutes ? J'ai l'intention de reproduire ces nouvelles variables sur les données brutes dans JMP en utilisant des formules de colonne.Plus précisément, cette ligne 23 à la ligne 114 du code R ci-joint : abcd_discrimination/demographics_baseline_clean.R à 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)
Re : Convertir un script R en JMPPeut-être plus facile d'utiliser JMP comme frontal et d'appeler le programme R existant à partir de JSL (JMP Script Language).