- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
列値ラベルを値に変換するにはどうすればよいですか?
こんにちは、
私はコミュニティに初めて参加したので (ただし、JMP はバージョン 1 から使用しています)、この質問をどこに投稿すればよいのかわかりません。
値ラベルを含む複数の列を含むファイル (.sav) を SPSS からインポートしました。 値 (数値) の代わりに値ラベル (実際の名前) を使用したいと考えています。 Recodeにはこの機能はないようです。 誰か助けてくれませんか? よろしくお願いします。 イェンス
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
私はカレンのアイデアを台本にしてみずにはいられませんでした。 値ラベルの取得1 つの引数、つまり「割り当て」のリスト (例: 2 = "No") を持つ式を返します。 私は 2 つのアプローチを思いつきました。これらの (不正な) 代入を直接使用するか、Xan が提案するようにそれらを操作して、マッチ表現。
以下は両方のアプローチに対する私の試みです。 ここでは、Match アプローチの方が高速です。 大きなテーブルの場合、多くの値にラベルがない場合、パフォーマンスはより同等になるように見えます。 マッチコードは改善できる可能性があります。
open_example_table = Expr(
dt = Open( "$SAMPLE_DATA/CrabSatellites.jmp" );
col = Column( dt, "color" );
col << data type( character );
);
//1
open_example_table;
bt = HP Time();
// Direct assignment code
v = Arg( col << get value labels(), 1 );
For( i = 1, i <= N Items( v ), i++,
col[dt << get rows where( col[] == Arg( v[i], 1 ) )] = Arg( v[i], 2 )
);
// End direct assignment
ht = HP Time();
t1 = ht - bt;
Close( dt, no save );
// 2
open_example_table;
bt = HP Time();
// code for building Match expression by string manipulation
match_expr = Parse(
"Match( col[]," || Substitute( Char( Arg( col << get value labels(), 1 ) ),
"{", "",
"=", ",",
"}", ""
) || ",col[])"
);
For Each Row( col[] = match_expr );
// End Match
ht = HP Time();
t2 = ht - bt;
Show( t1, t2 );
t1 = 1729;
t2 = 1019;
//:*/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
こんにちは、
私があなたの質問を正しく理解しているのであれば。
列のプロパティを使用して、値のラベルをオンまたはオフにできます。
この例では、サンプル データの Consumer Preferences を使用して、次のことができました。列を右クリックし、値ラベル オプションのチェックを外します。
以下に示すように、列では値ラベルが使用されなくなりました。
これがお役に立てば幸いです。
最高、
スタン
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
こんにちは、スタンリー。助けてくれてありがとう。値ラベルの機能は知っていますが、必要なのは、1、2、3の値をNo、Yes(例のように)文字値に変更または置換することです。
一致する列を持つ 2 つのテーブルを結合する必要があります。一方のテーブルには文字値 (もう一方のテーブルの値ラベルと同じ、つまりコーディングは使用されていません) があり、もう一方には値ラベルが付いた数値 (コード) があります。
それとも、一方のテーブルの列の値ラベルと、もう一方のテーブルの一致する列の実際の値に基づいて、テーブルをオンザフライで結合する方法はありますか?
よろしくお願いします
イェンス
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
データ型を文字に変更し、再コード化を使用します。
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
こんにちは、ヒントをありがとう。 300 を超える値ラベルがあり、Recode で手動で入力する必要がありました。もっとスマートな方法があればいいのにと思いました。
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
コードとその値の表がある場合は、UPDATE コマンドを使用して適切な値列を追加できます。
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
私たちが望んでいるのは (しかし今はありませんが)、「値ラベルを使用した再コード」だと思います。私も時々この機能が欲しいと思っていました。
カレン
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
いい考えだよ、カレン。
イェンスラベルをデータとして取り出すのは簡単ではありません。 私が考えることができる 2 つの方法:
- スクリプトを使用すると、Get Value Labels を使用して、スクリプトとして保存するときに Recode が生成する Match() 式のように結果を手動またはプログラムで操作できます。
- 変数に対して表を作成し、結果に対してデータテーブルに作成を使用します。
#2 の場合、ソートされた 1 対 1 マッピングにない場合は、何らかの方法で一致させる必要があります。 そのための手順:
- 新しい列に値のコピーを作成します (値ラベルなし)
- 両方の変数をカテゴリ列として指定して Tabulate を使用します。
- 表作成コマンド「データ テーブルに作成」を使用して、値ラベル プロパティのない新しいテーブルを取得します。
- [テーブル] > [結合] を使用して生の値を照合し、値ラベルのない新しい「ラベル付き」列を取得します。
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
私はカレンのアイデアを台本にしてみずにはいられませんでした。 値ラベルの取得1 つの引数、つまり「割り当て」のリスト (例: 2 = "No") を持つ式を返します。 私は 2 つのアプローチを思いつきました。これらの (不正な) 代入を直接使用するか、Xan が提案するようにそれらを操作して、マッチ表現。
以下は両方のアプローチに対する私の試みです。 ここでは、Match アプローチの方が高速です。 大きなテーブルの場合、多くの値にラベルがない場合、パフォーマンスはより同等になるように見えます。 マッチコードは改善できる可能性があります。
open_example_table = Expr(
dt = Open( "$SAMPLE_DATA/CrabSatellites.jmp" );
col = Column( dt, "color" );
col << data type( character );
);
//1
open_example_table;
bt = HP Time();
// Direct assignment code
v = Arg( col << get value labels(), 1 );
For( i = 1, i <= N Items( v ), i++,
col[dt << get rows where( col[] == Arg( v[i], 1 ) )] = Arg( v[i], 2 )
);
// End direct assignment
ht = HP Time();
t1 = ht - bt;
Close( dt, no save );
// 2
open_example_table;
bt = HP Time();
// code for building Match expression by string manipulation
match_expr = Parse(
"Match( col[]," || Substitute( Char( Arg( col << get value labels(), 1 ) ),
"{", "",
"=", ",",
"}", ""
) || ",col[])"
);
For Each Row( col[] = match_expr );
// End Match
ht = HP Time();
t2 = ht - bt;
Show( t1, t2 );
t1 = 1729;
t2 = 1019;
//:*/
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 列の値のラベルを値に変換するにはどうすればよいですか?
列をラベルの列に変換する別の方法は、列をコピーし、データをスクリプト エディタ ウィンドウ (または任意のテキスト ウィンドウ) に貼り付けることです。 次に、テキスト ウィンドウからデータをコピーします。 元のテーブルの新しい文字列に貼り付けます。
この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。