cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

列値ラベルを値に変換するにはどうすればよいですか?

jenssjorslev
Level III

こんにちは、

私はコミュニティに初めて参加したので (ただし、JMP はバージョン 1 から使用しています)、この質問をどこに投稿すればよいのかわかりません。

値ラベルを含む複数の列を含むファイル (.sav) を SPSS からインポートしました。 値 (数値) の代わりに値ラベル (実際の名前) を使用したいと考えています。 Recodeにはこの機能はないようです。 誰か助けてくれませんか? よろしくお願いします。 イェンス

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

1 ACCEPTED SOLUTION

Accepted Solutions
ms
Super User (Alumni) ms
Super User (Alumni)

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;

 

//:*/

10 REPLIES 10
stan_koprowski
Community Manager Community Manager

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

こんにちは、

私があなたの質問を正しく理解しているのであれば。

列のプロパティを使用して、値のラベルをオンまたはオフにできます。

この例では、サンプル データの Consumer Preferences を使用して、次のことができました。列を右クリックし、値ラベル オプションのチェックを外します。

undefined

以下に示すように、列では値ラベルが使用されなくなりました。

undefined

これがお役に立てば幸いです。

最高、

スタン

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

jenssjorslev
Level III

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

こんにちは、スタンリー。助けてくれてありがとう。値ラベルの機能は知っていますが、必要なのは、1、2、3の値をNo、Yes(例のように)文字値に変更または置換することです。

一致する列を持つ 2 つのテーブルを結合する必要があります。一方のテーブルには文字値 (もう一方のテーブルの値ラベルと同じ、つまりコーディングは使用されていません) があり、もう一方には値ラベルが付いた数値 (コード) があります。

それとも、一方のテーブルの列の値ラベルと、もう一方のテーブルの一致する列の実際の値に基づいて、テーブルをオンザフライで結合する方法はありますか?

よろしくお願いします

イェンス

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

ms
Super User (Alumni) ms
Super User (Alumni)

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

データ型を文字に変更し、再コード化を使用します。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

jenssjorslev
Level III

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

こんにちは、ヒントをありがとう。 300 を超える値ラベルがあり、Recode で手動で入力する必要がありました。もっとスマートな方法があればいいのにと思いました。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

pmroz
Super User

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

コードとその値の表がある場合は、UPDATE コマンドを使用して適切な値列を追加できます。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

KarenC
Super User (Alumni)

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

私たちが望んでいるのは (しかし今はありませんが)、「値ラベルを使用した再コード」だと思います。私も時々この機能が欲しいと思っていました。

カレン

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

XanGregg
Staff

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

いい考えだよ、カレン。

イェンスラベルをデータとして取り出すのは簡単ではありません。 私が考えることができる 2 つの方法:

  1. スクリプトを使用すると、Get Value Labels を使用して、スクリプトとして保存するときに Recode が生成する Match() 式のように結果を手動またはプログラムで操作できます。
  2. 変数に対して表を作成し、結果に対してデータテーブルに作成を使用します。

#2 の場合、ソートされた 1 対 1 マッピングにない場合は、何らかの方法で一致させる必要があります。 そのための手順:

  1. 新しい列に値のコピーを作成します (値ラベルなし)
  2. undefined
  3. 両方の変数をカテゴリ列として指定して Tabulate を使用します。
  4. undefinedundefined
  5. 表作成コマンド「データ テーブルに作成」を使用して、値ラベル プロパティのない新しいテーブルを取得します。
  6. [テーブル] > [結合] を使用して生の値を照合し、値ラベルのない新しい「ラベル付き」列を取得します。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

ms
Super User (Alumni) ms
Super User (Alumni)

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))やご指定の言語 でも表示されます。

chungwei
Staff (Retired)

Re: 列の値のラベルを値に変換するにはどうすればよいですか?

列をラベルの列に変換する別の方法は、列をコピーし、データをスクリプト エディタ ウィンドウ (または任意のテキスト ウィンドウ) に貼り付けることです。 次に、テキスト ウィンドウからデータをコピーします。 元のテーブルの新しい文字列に貼り付けます。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。