行データは分割されますが、列ヘッダーは分割されませんこんにちは、
以下の問題なしでcsvファイルを開くことができます。_および|を持つ各列の最初の値を読み取る方法スプリット。列ヘッダーを同じ名前にして、後でプロットできるようにしたい。
_または|を削除するためにデータプレビュー付きで開こうとしたただし、列ヘッダーも分割されます。
Data: <BR />ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count<BR />125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7<BR /><BR />Keep: <BR />ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count<BR />125480,Jack,CA,0.310,0.610,0.7
csv_file = "C:/test3.csv";
Open(csv_file);
test3.csv
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7
125481,Jane,US,0.300_0.300_0.300_0.300_0.300_0.300_0.300_0.300,0.600|0.600|0.600|0.600|0.600|0.600|0.600|0.600,0.69
125482,Joe,BZ,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71
125483,Jim,FR,0.340_0.340_0.340_0.340_0.340_0.340_0.340_0.340,0.640|0.640|0.640|0.640|0.640|0.640|0.640|0.640,0.73
125484,Jerry,US,0.330_0.330_0.330_0.330_0.330_0.330_0.330_0.330,0.630|0.630|0.630|0.630|0.630|0.630|0.630|0.630,0.72
125485,John,CA,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71
ありがとう。
Re:行データは分割されますが、列ヘッダーは分割されません形式がめちゃくちゃになった理由がわかりません。データの内容と保持したいものを表示したかった。
Data:
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7
Keep:
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310,0.610,0.7
再度、感謝します。
Re:行データは分割されますが、列ヘッダーは分割されませんこれは、Word()関数を使用した非常に単純な操作です。 JMPには、非常に強力な文字操作機能がいくつかあります。 ドキュメントについては、スクリプトガイドとスクリプトインデックスを参照してください。
names default to here(1);
dt=open("c:\test3.csv");
For Each Row(
:Column1_Value = word(1, :Column1_Value, "_" );
:Column2_Value_More = word(1, :Column2_Value_More, "|" );
);
dt:Column1_Value << data type(numeric);
dt:Column1_Value << modeling type(continuous);
dt:Column2_Value_More << data type(numeric);
dt:Column2_Value_More << modeling type(continuous);Re:行データは分割されますが、列ヘッダーは分割されませんジム、
迅速な対応ありがとうございます。特定の列をword()でハードコードすることを避けるにはどうすればよいですか。Colsのforループを使用して、_と|を動的に変更できますか?
ありがとう。
Re:行データは分割されますが、列ヘッダーは分割されません- あなたが尋ねている質問を考えると、JSLの基本について学ぶのに少し時間を費やす必要があります。 スクリプトガイドをお読みください:ヘルプ==> JMPドキュメントライブラリ==>スクリプトガイド
- あなたの質問に答えるために、私は元のスクリプトのWord()関数の1つを動的参照を使用するように変更しました
names default to here(1);
dt=open("c:\users\jim\documents\test3.csv");
myWord = 1;
myColumn = "Column1_Value";
myDelimiter = "_";
For Each Row(
:Column1_Value = word(myWord, as Column( myColumn ), myDelimiter );
:Column2_Value_More = word(1, :Column2_Value_More, "|" );
);
dt:Column1_Value << data type(numeric);
dt:Column1_Value << modeling type(continuous);
dt:Column2_Value_More << data type(numeric);
dt:Column2_Value_More << modeling type(continuous);
Re:行データは分割されますが、列ヘッダーは分割されませんジム、
私はJSLを新しく学習しているので、混乱してすみません。
列ヘッダーが複数ある場合、列ヘッダー名をハードコーディングするのではなく、ループしてsplit _または|の最初の値を取得します。以下で試してみましたが、コードが壊れていることがわかりました。
csv_file = "C:/test3.csv";
CSV_data = Open( csv_file );
col = CSV_data << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
For Each Row(
:col[i] = Word( 1, col[i], "_" );
:col[i] = Word( 1, col[i], "|" );
);
);
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count,COL1,COL2_ABC
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7,0.7,0.9_0.9
125481,Jane,US,0.300_0.300_0.300_0.300_0.300_0.300_0.300_0.300,0.600|0.600|0.600|0.600|0.600|0.600|0.600|0.600,0.69,0.7,0.9_0.9
125482,Joe,BZ,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71,0.7,0.9_0.9
125483,Jim,FR,0.340_0.340_0.340_0.340_0.340_0.340_0.340_0.340,0.640|0.640|0.640|0.640|0.640|0.640|0.640|0.640,0.73,0.7,0.9_0.9
125484,Jerry,US,0.330_0.330_0.330_0.330_0.330_0.330_0.330_0.330,0.630|0.630|0.630|0.630|0.630|0.630|0.630|0.630,0.72,0.7,0.9_0.9
125485,John,CA,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71,0.7,0.9_0.9
Re:行データは分割されますが、列ヘッダーは分割されません非常に近いですが、最後に送信したコードを見ると、操作対象の列を参照するときに、その前にAs Column()を配置しているので、実際に必要なのは
names default to here(1);
csv_file = "C:/test3.csv";
CSV_data = Open( csv_file );
col = CSV_data << get column names( string );
nc = N Items( col );
// You don't want the first 3 columns processed,
// or the last one processed, so the index values
// to be used needs to be changed to handle this
For( i = 4, i <= nc - 1, i++,
For Each Row(
as column(col[i]) = Word( 1, as column( col[i]), "_|" );
);
);