R을 JMP 스크립트로 변환안녕하세요,
저는 R에 익숙하지 않고 JMP로 작업해 왔습니다(아직 초보).JMP 스크립트로 변환해야 하는 R 코드가 있습니다.나는 JMP에 전화를 걸었고 누군가 나를 도울 수 있는지 알아보기 위해 여기에 게시할 것을 제안했습니다.
R 코드는 여기에 포함되어 있습니다. 메인에서 abcd_discrimination/demographics_baseline_clean.R · barzilab1/abcd_discrimination · GitHub
JMP에 데이터시트가 있는데 스크립트를 변환하는 방법을 모릅니다.
도움을 줄 수 있는 사람이 있습니까?
파일은 txt로 첨부했습니다
당신의 도움에 미리 감사드립니다.
자동화 및 스크립팅Re: R을 JMP 스크립트로 변환매우 감사합니다.시간을 내어 도와주셔서 감사합니다!
Re: R을 JMP 스크립트로 변환또한 커뮤니티의 다른 사용자가 저에게 연락하여 R 코드를 실행하려고 했지만 몇 가지 오류가 있었습니다. "있는 그대로" 작성된 R 스크립트의 근본 원인은 유틸리티 파일의 오래된 경로 설정과 관련이 있습니다.
@GraphicalScore9 GIT 저장소 소유자에게 연락하거나 csv 파일이 이미 있는지 확인하는 것이 좋습니다.안타깝게도 R 코드가 작동을 멈추는 것은 드문 일이 아닙니다(이는 JMP 또는 SAS에는 없는 오픈 소스 소프트웨어의 문제 중 하나입니다).
Re: R을 JMP 스크립트로 변환감사합니다 마크! 이것은 매우 도움이 됩니다!
JMP에서 사용할 수 있는 R 기능과 관련하여 언급한 일부 리소스와 관련하여 온라인 지원 문서도 좋은 참고 자료가 될 수 있음을 여기서 언급하고 싶습니다. https://www.jmp.com/support/help/en/16.2/#page/jmp/import-data-from-r.shtml#
너의 것, 패트릭
Re: R을 JMP 스크립트로 변환이 단계에서 발생하는 것은 데이터 정리입니다. "demographics_set"은 JMP 데이터 테이블과 유사한 데이터 테이블입니다.
R은 demographics_set[rows,columns]라는 규칙을 사용합니다. 따라서 아래에 다음과 같은 줄이 있으면 쉼표 왼쪽의 괄호 안에는 아무것도 없기 때문에 모든 행에 적용됩니다. "sex_br" 열의 경우 "F"에 대해 1 값을 할당하고 "M"(및 "F"가 아닌 모든 항목)에 대해 0을 할당합니다. 논리는 (sex == "F")가 TRUE일 때 1을 반환하고 FALSE일 때 0을 반환한다는 것입니다. ":="는 왼쪽 대입 연산자(중위)입니다. R은 처음에는 이 연산자를 인식하지 못할 수 있으므로 코드의 나머지 부분보다 먼저 `:=` <- `<-` 줄을 실행해야 할 수 있습니다. 이렇게 하면 ":="에 보다 일반적인 할당 연산자("<-")가 할당됩니다.
demographics_set[, sex_br := (sex == "F")*1]
아래에 행 하위 집합이 있는 또 다른 예가 있습니다. "demo_ethn_v2"가 "1"인 행의 경우 "ethnicity_hisp" 열에 값 1을 할당합니다.
demographics_set[demo_ethn_v2 == "1", ethnicity_hisp := 1]
is.na() 함수는 대괄호 안의 열에 대해 NA가 아닌 행을 선택합니다.
as.character() 및 as.numeric() 함수는 열을 명시된 대로 문자 또는 숫자로 변환합니다. 때로는 먼저 문자로 변환한 다음 숫자로 변환해야 하므로 코드에서 중첩 함수가 발생합니다.
이 모든 데이터 정리 후 다음 줄 데이터 프레임의 부분 집합화로 인해 더 이상 사용되지 않는 요소 수준을 삭제합니다.
demographics_set = droplevels(demographics_set)
즉, 이 R 코드를 JMP 스크립트에 포함하고 R 함수를 사용하여 R 코드를 실행하는 것이 더 쉬울 것이라는 점에서 다른 사람들의 의견에 동의합니다. 도움말 메뉴에서 JMP의 스크립팅 인덱스를 확인하여 R 기능을 찾으십시오. R에 대한 연결을 초기화하려면 R Init(), R 코드에 입력하려는 파일이나 변수를 래핑하는 R Send(), R 코드를 래핑하는 R Submit(), R Get( ) R에서 출력을 다시 JMP(또는 그래픽 개체를 검색하는 경우 R Get Graphics())로 검색하고 R Term()을 사용하여 R 인터페이스를 종료합니다. 실제보다 더 복잡해 보이지만 모든 R 코드를 JSL(JMP 스크립팅 언어)로 다시 작성하는 것보다 여전히 쉬울 것입니다. 스크립팅 인덱스에는 도움이 되는 몇 가지 좋은 예가 있습니다.
Re: R을 JMP 스크립트로 변환@GraphicalScore9 , 여기에서 질문을 더 구체적으로 만들어 주셔서 감사합니다.이것은 일반적으로 도움이 될 수 있습니다. JMP to R 추가 기능 빌더 - JMP 사용자 커뮤니티 .
@txnelson , 이것이 당신이 도울 수 있는 일입니까?수식 편집기의 스크립팅 가능한 논리는 스크립터가 아닌 사용자를 위해 JMP에서 이해하기 쉽습니다. 여기에서 사용자가 필요로 하는 것은 여기의 R 소스 코드에서 이러한 새 변수 이름을 생성하기 위한 논리에 대한 몇 가지 기본적인 해석입니다. 그런 다음 거기에서 열 수식(스크립트 편집기 또는 수식 편집기 내)에 익숙한 JMP 사용자라면 JMP 데이터 테이블 환경 내에서 구현하는 것이 매우 간단할 것입니다.
Re: R을 JMP 스크립트로 변환안녕하세요 여러분, 질문을 좀 더 구체적이고 JMP에 중점을 두려고 합니다. 첨부된 데이터에서 생성된 다음 R 코드에서 R이 원시 데이터에서 이러한 새 변수를 만드는 논리를 설명할 수 있습니까? 열 수식을 사용하여 JMP의 원시 데이터에서 이러한 새 변수를 재현하려고 합니다.구체적으로 첨부된 R 코드의 23행에서 114행까지: 메인에서 abcd_discrimination/demographics_baseline_clean.R · 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: R을 JMP 스크립트로 변환JMP를 프런트 엔드로 사용하고 JSL(JMP Script Language)에서 기존 R 프로그램을 호출하는 것이 더 쉬울 수 있습니다.