これを行うIDのテーブル列を追加するための最良の方法についての提案が必要です....<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />基本的に私はこのオリジナルのテーブルを持っています:
| 列A | B列 | 列A | B列 |
| ある | e | 私 | メートル |
| b | f | j | n |
| c | g | k | ○ |
| 日 | 時間 | l | p |
今、私がやりたいことは、このような「新しい列ID」を持つ別のテーブルを作成することです。
| 新しい列ID | 列A | B列 | 列A | B列 |
| 1 | ある | e | 私 | メートル |
| 1 | b | f | j | n |
| 1 | c | g | k | ○ |
| 1 | 日 | 時間 | l | p |
| 2 | ある | e | 私 | メートル |
| 2 | b | f | j | n |
| 2 | c | g | k | ○ |
| 2 | 日 | 時間 | l | p |
| 3 | ある | e | 私 | メートル |
| 3 | b | f | j | n |
| 3 | c | g | k | ○ |
| 3 | 日 | 時間 | l | p |
| バツ | ある | e | 私 | メートル |
| バツ | b | f | j | n |
| バツ | c | g | k | ○ |
| バツ | 日 | 時間 | l | p |
私が今頭に持っているのは、サブセットを作成して元のテーブルを複製することです。そしてこのサブセットに、私は特定の値を持つ "新しい列ID"を追加します(すべての行で同じです)。同じプロセスを繰り返して、必要なだけサブセットを作成します(各サブセットに「新しい列ID」が追加されます)。完了したら、すべてのサブセットを1つのテーブルに連結するだけです。
私はあなたがあなたが共有できるより良い考えを持っているかどうか知りたいのです。
再:これを行うIDのテーブルの列を追加するための最良の方法についての提案が必要です....@Ianと@MSあなたの良い提案をありがとう。私の現在のスクリプトでは、@ Ianからのこの提案を(@MSからのミックスと共に)取り入れています。
再:これを行うIDのテーブルの列を追加するための最良の方法についての提案が必要です....よくあることですが、簡潔さは美徳です。
私はMarcusのやり方がとても気に入ったので、後で再利用するためにそれから関数を作成しました。
NamesDefaultToHere ( 1 ) ;
// サンプルデータ
dt1 = NewTable ( 「ソースデータ」 、
NewColumn ( "A" 、数値 、連続的 、式 ( ランダム正規 ())) 、
NewColumn ( "B" 、数値 、連続的 、式 ( RandomInteger ( 1 、 10年 ))) 、
AddRows ( 6 ) ;
) ;
//テーブル 'dt' 'n'のクローン作成 。。
cloneTable =
関数 ({ dt 、 n } 、 { デフォルトのローカル } 、
テーブル = 繰り返す ({ dt } 、n - 1 ) ;
new_dt = dt << 連結する ( テーブル ) ;
new_dt << setName ((( dt << getName ) || 「クローン」 || チャー ( n ) || 「回」 ) ;
idCol = new_dt << newColumn ( 「ID」 、数値 、公称 、式 ( 天井 ( 行 () / 今 ( dt ))) ;
idCol << deleteFormula ;
new_dt << moveSelectedColumns ({ idCol } 、 「ToFirst」 )
) ;
dt2 = cloneTable ( dt1 、 20 ) ;
再:これを行うIDのテーブルの列を追加するための最良の方法についての提案が必要です....複数のコピーを連結するためにサブセットを作成する必要はありません。元のテーブルを連結ダイアログで複数回追加するだけです。新しいIDがカウンタの場合は、列式を使用してIDを生成できます。
jslの例:
// dtをn回スタックする
dt = 現在のデータ表 () ;
n = 10年 ;
テーブル = 繰り返す ({ dt } 、 n - 1 ) ;
new_dt = dt << 連結する ( テーブル ) ;
new_dt << 新しいコラム ( 「新しい列ID」 、数値 、式 ( 天井 ( 行 () / 4 ))) ;
再:これを行うIDのテーブルの列を追加するための最良の方法についての提案が必要です....代替案を見つけてください、しかし、私はそれが「より良い」と言うことができるかどうかわからない:
NamesDefaultToHere ( 1 ) ;
//サンプル(数値!)データ
dt1 = NewTable ( 「ソースデータ」 、
NewColumn ( "A" 、数値 、連続的 、式 ( ランダム正規 ())) 、
NewColumn ( "B" 、数値 、連続的 、式 ( RandomInteger ( 1 、 10年 ))) 、
AddRows ( 6 ) ;
) ;
//データをdt1 'n1'回複製する
n1 = 2 ;
n2 = 今 ( dt1 ) ;
ソース = dt1 << getAllColumnsAsMatrix ;
先 = [] ;
にとって ( 私 = 1 、私 <= 2 、私 ++、先 = VConcat ( 先 、ソース )) ;
// ID列をベクトルとして作成
id = ソート昇順 ( 繰り返す ((( 1 :: n1 ) 、 n2 )) ;
//ファイナルテーブルを組み立てる
コルズ = インサート ( dt1 << getColumnNames ( ひも ) 、 「ID」 、 1 ) ;
dt2 = AsTable ( id || 先 、 << ColumnNames ( コルズ )) ;
dt2 << setName ((( dt1 << getName ) || 「クローン」 || チャー ( n1 ) || 「回」 ) ;
データがすべて数値ではない場合でも、「すべての列を行列として取得」は機能しますが、dt2をアセンブルするときに値をCharacterに戻す方法を考え出すという追加の作業があります。