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 にはないオープンソース ソフトウェアの問題の 1 つです)。
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 コードを実行する方がおそらく簡単であるという点で、私も他の意見に同意します。 R 関数を見つけるには、[ヘルプ] メニューの JMP のスクリプト インデックスを確認してください。 おそらく、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 プログラムを呼び出す方が簡単かもしれません。