Conversión de secuencia de comandos R a JMPHola,
No estoy familiarizado con R y he estado trabajando con JMP (todavía principiante).Tengo código R que necesito convertir a script JMP.Llamé a JMP y me sugirieron que publicara aquí para ver si alguien me puede ayudar.
El código R está contenido aquí. abcd_discrimination/demographics_baseline_clean.R en principal · barzilab1/abcd_discrimination · GitHub
y tengo la hoja de datos en JMP, simplemente no tengo idea de cómo convertir el script.
¿Hay alguien que pueda ayudar?
Adjunto el archivo en txt
Gracias de antemano por su ayuda.
Automatización y secuencias de comandosRe: Convertir script R a JMPMUCHAS GRACIAS.Agradezco su tiempo y ayuda!
Re: Convertir script R a JMPTambién debo señalar que otro usuario de la comunidad me contactó e intentó ejecutar el código R, pero tuvo algunos errores; teniendo en cuenta que la causa raíz probable del script R escrito "tal cual" tiene que ver con la configuración de ruta obsoleta en los archivos de utilidad.
@GraphicalScore9 Le recomiendo que se comunique con el propietario del repositorio GIT o tal vez vea si el archivo csv ya existe.Desafortunadamente, no es raro que el código R deje de funcionar (este es uno de los problemas con el software de código abierto que no tiene con JMP o SAS).
Re: Convertir script R a JMP¡Gracias Marcos! ¡Esto es muy útil!
Con respecto a algunos de los recursos que mencionó relacionados con las funciones R disponibles en JMP, quería señalar aquí que una buena referencia también sería la documentación de soporte en línea: https://www.jmp.com/support/help/en/16.2/#page/jmp/import-data-from-r.shtml#
tuyo, patricio
Re: Convertir script R a JMPLo que ocurre en estos pasos es la limpieza de datos. "demographics_set" es una tabla de datos que es similar a una tabla de datos JMP.
R usa la convención: conjunto_demográfico[filas,columnas]. Por lo tanto, cuando tiene la siguiente línea debajo, se aplica a todas las filas ya que no hay nada dentro de los corchetes a la izquierda de la coma. Para la columna "sex_br", asigna un valor de 1 para "F" y 0 para "M" (y cualquier cosa que NO sea "F"). La lógica es que (sex == "F") devuelve 1 cuando es VERDADERO y 0 cuando es FALSO. El ":=" es un operador de asignación a la izquierda (infijo). Es posible que R no reconozca este operador al principio, por lo que es posible que deba ejecutar la línea: `:=` <- `<-` antes del resto del código. Esto asigna el operador de asignación más típico ("<-") a ":=".
demographics_set[, sex_br := (sex == "F")*1]
Aquí hay otro ejemplo donde hay un subconjunto de filas a continuación. Para las filas donde "demo_ethn_v2" es igual a "1", asigne un valor de 1 a la columna "ethnicity_hisp".
demographics_set[demo_ethn_v2 == "1", ethnicity_hisp := 1]
La función is.na() selecciona las filas que no son NA para la columna dentro de los corchetes.
Las funciones as.character() y as.numeric() convierten la columna en carácter o numérico, como se indica. A veces es necesario convertir primero a carácter y luego a numérico, de ahí las funciones anidadas que se producen en el código.
Después de toda esta limpieza de datos, la siguiente línea elimina los niveles de factor que ya no se utilizan debido a la creación de subconjuntos en el marco de datos.
demographics_set = droplevels(demographics_set)
Dicho esto, estoy de acuerdo con los demás en que probablemente sería más fácil para usted incrustar este código R dentro de un script JMP y usar las funciones R para ejecutar el código R. Consulte el Índice de secuencias de comandos en JMP en el menú Ayuda para encontrar las funciones de R. Probablemente necesitará R Init() para inicializar la conexión a R, R Send() para envolver cualquier archivo o variable que desee ingresar en el código R, R Enviar() para envolver su código R, R Get( ) para recuperar la salida de R de nuevo en JMP (o R Get Graphics() si está recuperando un objeto gráfico) y R Term() para terminar la interfaz R. Suena más complicado de lo que es, pero probablemente aún sea más fácil que volver a escribir todo el código R como JSL (lenguaje de secuencias de comandos JMP). El índice de secuencias de comandos tiene algunos buenos ejemplos para ayudarlo.
Re: Convertir script R a JMP@GraphicalScore9 , Gracias por hacer sus preguntas más específicas aquí.Esto podría ser de ayuda en general: El generador de complementos de JMP a R - Comunidad de usuarios de JMP .
@txnelson , ¿Es algo con lo que puedas ayudar?La lógica de secuencias de comandos en el editor de fórmulas es fácil de entender en JMP para quienes no realizan secuencias de comandos; parece que lo que el usuario necesita aquí es una interpretación básica de la lógica para crear estos nuevos nombres de variables a partir del código fuente de R aquí incluido, y luego, a partir de ahí, si es un usuario de JMP familiarizado con las fórmulas de columna (dentro del editor de secuencias de comandos o el editor de fórmulas), debería ser bastante sencillo implementarlo dentro del entorno de la tabla de datos de JMP.
Re: Convertir script R a JMPHola a todos, estoy tratando de hacer mi consulta un poco más específica y centrada en JMP. A partir del siguiente código R generado a partir de los datos adjuntos, ¿alguien puede explicarme la lógica de lo que está haciendo R al crear estas nuevas variables a partir de los datos sin procesar? Tengo la intención de reproducir estas nuevas variables en los datos sin procesar en JMP usando fórmulas de columna.Específicamente, esta línea 23 a la línea 114 del código R adjunto: abcd_discrimination/demographics_baseline_clean.R en principal · 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 script R a JMPPodría ser más fácil usar JMP como front-end y llamar al programa R existente desde JSL (JMP Script Language).