SASに似たJMPみなさん、こんにちは
私は昔のSASヘッドです(Base programming ...に堪能です)。しかし... !
私はJMPでかなり単純な作業をしたいのですが。それで、それは現れます...
基本的に、私はCITIES.JMPを開き、欠損値を持つすべての行(およびフィールド)をCOに保存し、そしておそらくこのサブセットを新しいnewの下に保存したいと思います。CITIES_MISS.jmp
基本的な等価物は「COが欠けているところ」です。
解決できないだけです。私のクエリがうまくいっているように見えても、サブセットを開くとすぐに、まだマークされているだけのデータ行がすべて見つかります。サンプルコードの助けを借りて、もしあればJMPとSASロジックの論理的な違いを説明してください。
ありがとうございました。
初心者
再:SASに似たJMP '必要なJSLは次のようになります。
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
missingCORows = dt1 << getRowsWhere(IsMissing(:CO));
dt2 = dt1 << Subset(Rows(missingCORows));
dt2 << setName((dt << getName)||"_MISS");
[ヘルプ]> [書籍]> [スクリプトガイド]と[ヘルプ]> [スクリプトインデックス]を試してください。比較について考え過ぎるのではなく、問題と解決策に「近い」コードで作業を始めます。経験上、あなたはここでたくさんの助けを得るでしょう。
再:SASに似たJMP 'ありがとうございました。今、私は行を持っています。
昨日私は約4時間を過ごしましたが、達成することさえできませんでした
その結果は、『スクリプトガイド』の「JSL Syntax Reference」(WWW)を使用してください。
それで、私があなたにすべてを守る方法を尋ねるならば、私と一緒に我慢してください
他のCTITIESフィールド、例えば CITY、SO 2など 敬具。
再:SASに似たJMP '私はあなたがこれのスクリプト版を探していると確信しています、そして私は他の誰かが提供するためにそれを任せます。 個人的には、スクリプトを作成しなくても95%の作業が可能です。私にとっては、これがJMPとSAS(または他のほとんどのプログラム)との大きな違いの1つです。 スクリプトを使用せずに必要な操作を実行するには、[行] - [行の選択] - [場所]を選択して列名COを強調表示し、空白のままにします。 それはあなたが探している5行を選択します。 次に、「Tables」の下の「Subset」をクリックすると、すべての列と5行だけが表示されます。
残念ながら、JMPが今行ったことを自動的にスクリプト化する方法はないと思います。 分析を実行してスクリプトを保存すると、スクリプトは自動的に作成されます。 しかし、JMPが自動的にテーブル操作をスクリプト化する方法はないと思います。 私はそこにいてほしい - そしておそらく私が気付いていない何かがある。
再:SASに似たJMP '素直な評価をありがとうございました
私の仕事の一部は、ビジネス要件としてスクリプトを記述することによってJMPの長所と限界を自動化するプロセスを評価することです。
JMPが最も単純なETLプロセスを処理できない場合でも、JMPなしで作業を進めなければなりません。
しかし、その分析ポートフォリオは素晴らしくダンディに見えるので、これは残念です。
再:SASに似たJMP 'もちろん、JMPはあなたがスクリプトであなたが望むことをすることができます。 私はあなたが要求したことが一つなしでもできることを単に指摘しています。 私がスクリプトなしですることはすべてバックグラウンドで実行されているスクリプトを持っています。 JMPを機能させるために費やした4時間は、適切なスクリプトを見つけ出すための4時間でした。 私はスクリプトなしでタスクを達成するのに5秒間費やしました。 あなたの仕事はJMPを評価することであり、要件はスクリプトです。 まあ、その要件は満たされています。 あなたの懸念がスクリプト言語を評価することであるなら、あなたは他の人が反応するのを待つべきです - 他の言語と比較してJMPスクリプトを話すことができるこのフォーラムの多くの人々がいます。
再:SASに似たJMP '多分私は私の要求をJMPコミュニティに言い換えます。あなたはお勧めですか
可能なJMPスクリプトアプローチを私が尋ねることができる特定のJMPフォーラム?
再:SASに似たJMP '私があなたが言うときあなたがやりたいことの範囲に関して不明瞭なことです。私は可能なJMPスクリプトアプローチを求めることができるところ '。なにに?
前述のように、これはJSLを含むJMPのすべてのものをサポートするのに適した場所です。しかし、このスレッドが示すように、明確な画像を得るのは難しいかもしれません - 質問がどのようにして求められるかによって、回答はすぐに役立つかどうか、実際には質問者よりも多くの文脈と事前知識を仮定するか持っています。
そして、すでに述べたように、「比較」はコーディングには難しい場合があります。ソフトウェアアプリケーションにとってはさらに困難です。
JMPが他のソフトウェア(SASを含む)との関連であなたのニーズをどのように満たすことができるかを真剣に検討するつもりならば、私は地元のJMPチームがこれに取り組むことを喜ばしく思います。
再:SASに似たJMP 'ご意見をいただきありがとうございます。たぶん私は自分自身を十分にはっきりさせなかった。
私はたまたまJMPに慣れていないので、私はもっと
どのJMPグループまたはリストJMPをフィルタリングするかについての質問を投稿できます
"misisngs"条件によってサブセットにデータセットを作成します。私は今どのように私は気づく
私の最初の投稿の「件名」についての説明は、誤解を招くだけではありません。
残念ながら、私はそれがすでに出ていて遅すぎた後に気づいた…
再:SASに似たJMP:列に欠損値でデータをフィルタ処理閉じるが…
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step [DOESNT WORK: SAVED dataset still contains all (N=52) data rows instead of selected (N=5) rows]
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
私も変種を試してみました
Close( dt2, save( "V:/Process/.../Data/AnewDEMOname.jmp" ) );
うまくいきません。SAVEDデータセットには、選択された(N = 5)行ではなく、すべて(N = 52)のデータ行が含まれています。
これはJMPのバグですか?
Microsoft Windows 10 Enterprise 64ビット上でJMP®14.0.0(64ビット)を使用している。
再:SASに似たJMP:列に欠損値でデータをフィルタ処理申し訳ありませんが、dt2への代入をに入れていないようです。
そのはず:
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
//note the assignment of the result of the subset into the variable dt2
dt2 = dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
私は以前の投稿を修正するつもりですので、これを後で読む人は混乱しないでしょう。
謝罪いたします。あなたの進捗状況をお知らせください。
再:SASに似たJMP 'フォローアップ @ian_jmp の応答、彼はそうです、これは場所です JMPについて質問します。
ここにいるすべてのメンバーはあなたを正しい方向に向けるのを助けて幸せになるでしょう。質問し続けて、私たちはあなたを助けましょう。
そうは言っても、JSLを学ぶための最善の方法は対話的にJMPを使うことを学ぶことです。SASでのやり方に基づいて、やり方を推測しないようにしてください。JMPとSASの2つの製品は異なる使用パターンで構築されているため、動作が異なります。
ほとんどのスクリプト言語は、対話的に作業を行うために使用するのと同じコマンドを使用してJMPを自動化することに基づいています。例えば、あなたの最初の質問であなたは知りたがっていました:
基本的に、私はCITIES.JMPを開き、欠損値を持つすべての行(およびフィールド)をCOに保存し、そしておそらくこのサブセットを新しいnewの下に保存したいと思います。CITIES_MISS.jmp
これを対話的に行う方法は、CITIES.JMPを開き、COがないすべての行を選択してからTables-> Subsetを使用して新しいデータテーブルを作成することです。
したがって、JSLはこれと同じパターンに従います。
//open data table
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
//select all rows of data table where column CO is missing
dt1 << Select Where(is Missing(:CO));
//create a subset of data table with only selected rows, keeping all columns
dt2 = dt1 << subset(selected rows(1));
//note that renaming and saving can be done in one step
dt2 << save("A new name.jmp");
あなたが言った:
JMPが最も単純なETLプロセスを処理できない場合でも、JMPなしで作業を進めなければなりません。
しかし、その分析ポートフォリオは素晴らしくダンディに見えるので、これは残念です。
私はここで最も多くJMPが単純な(そして複雑な!)ETLプロセスを扱うことができると言うだろうと思います。それで、あなたがそれをする方法を理解することができないならば、ただ尋ねなさい。
こちらのリストです JMPを学ぶための最良のリソース。
あなたがJMPを探求し続けるように私たちに知らせてください、そして、私たちは助けて幸せです。
[Note 20May2019:上のコードはdt2への代入を示すように修正されました。もともとこれは誤って省略されました。後の投稿はこれを指摘し、それはここで修正されました。
再:SASに似たJMP:列に欠損値でデータをフィルタ処理今それは働いた。魔法のように。どうもありがとう。