ラップされたセルコンテンツを含むExcelシートのインポートこんにちは、
Excel for Analysisでラップされたセルを避ける方が良いことはわかっていますが、この種のデータを持っている顧客がいます。Excelインポートウィザードを使用してインポートすると、ラップされたセルもインポートされますが、すべてのエントリを表示するには行を大きくする必要があります。これらの列は、デフォルトでは文字および名義です。ただし、分析には使用できませんでした。最初の列の1つのセル(DE、US、ES)に複数の国があり、2番目の列の1つのセルに関連する数値(10、15、7などのスコア)があるとします。つまり、ドイツのスコアは10、US 15およびES 7のスコアです。
そのようなデータをどのように扱うのですか?別の行にインポートする方法はありますか?
(これはデータの単純化されたバージョンです。これらのセルの1つがそれぞれの研究の1つに属している追加の変数や研究/プロジェクトなどのグループ化変数を考えることができます。)
私が今まで試したこと:
JMPでこのデータを使用するには、ラップに「、」または「;」の区切り文字がないため、多重応答変数を使用して、プロパティ「Multiple Response」に区切り文字「」を設定できます。これまでのところは良いですが、データは数値ではなく頻度で分析されるようになりました。そのため、一連の分析方法を使用することはできません。
スタック、分割、およびその他のテーブル操作は、マルチレスポンス列を考慮せず、エントリ全体を1つの値として置くため、機能しませんでした。列に展開することも成功しませんでしたが、トリックを見つけることができなかったかもしれません。しかし、これにはすでに多くのステップがあり、素晴らしい解決策に関係しているように見えますが、解決策はありません。
最善の解決策は、Excelで別の構造/形式でデータを提供することです。または、他に提案はありますか?
Excelファイルとスクリプトを添付して、モデリングタイプをインポートし、マルチレスポンスに変更します。
おかげで、
マーティン
再:セルのコンテンツがラップされたExcelシートのインポートこんにちはブレイディ、どうもありがとう!ソースの形式を変更することを強くお勧めします。これはJSLで処理できますが、注意が必要な列がさらにある場合はさらに面倒になる可能性があるためです。
連続した複数のシリーズのスタックオプションも、今では明確になっています。
おかげで、
マーティン
再:セルのコンテンツがラップされたExcelシートのインポートこのデータはラッピングが原因で本当にいです。これが機能するかどうかを確認してください。それは私のために働くようです。
主なアイデアは次のとおりです。
空白を折りたたみ、改行をコンマに、テキストを列に、連続する複数シリーズスタックを置き換えます。
さらに、列の削除、空の行の削除、型の変換などのクリーンアップ操作がいくつかあります。
Names Default To Here(1);
dt = Open(pickfile(),
Worksheets( "Sheet1" ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
)
);
dt << new column("C2", formula(collapse whitespace(substitute(:Country, "\!n",","))));
dt << new column("D2", formula(collapse whitespace(substitute(:Data, "\!n",","))));
dt << select columns({"C2", "D2"});
dt << text to columns(delimiter(","));
dt << Delete Columns;
dt << Delete Columns (1,2);
collist = dt << get column names(string);
colExpr = insert(expr(columns()), colList);
stackExpr = Expr(
dtStack = dt << Stack(
_CCC_,
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Contiguous
)
);
substituteInto(stackExpr, expr(_CCC_), nameexpr(colExpr));
stackExpr;
dtStack << delete Columns (1,3);
dtStack << select where (:Data == "") << delete rows();
close(dt, nosave);
column(dtStack,1)<<SET name=""></SET>再:セルのコンテンツがラップされたExcelシートのインポートうーん、いい考えですが、2つの列をスタックするように要求するため使用できませんが、選択できるのは1つだけです。サンプル表を添付しましたが、間違って使用している可能性があります。
修正、テーブルの区切り文字を「、」に変更する場合に使用できます
For Each Row(
new1 = Substitute( Column( 1 )[], "\!n", "," );
Column( 1 )[] = new1;
);
For Each Row(
new2 = Substitute( Column( 2 )[], "\!n", "," );
Column( 2 )[] = new2;
);
ただし、終了テーブルが期待されるようには見えません。これは次のようなものです。
|
ID
|
国
|
データ
|
|
1
|
DE
|
10
|
|
1
|
引数
|
15
|
|
1
|
米国
|
13
|
| 2 |
DE |
10 |
再:セルのコンテンツがラップされたExcelシートのインポートあなたが提案した多重回答列のアイデアを使用すると、使用するのに最適な立場になりますしゅうのデータテーブルツールアドイン。 そこにはユーティリティがあり、Multiple ResponseとStackedの間を行き来することができます。 スタックしたら、モデリングとデータの種類をデータに適したものに変更するだけです。
ベスト、
M