表のソート|2列を列名指定で安定並べ替え
名前と2列の数値表を貼り付け、X、Y、合計のいずれかを昇順・降順で安定ソートし、同値行の入力順を保ちます。
計算結果
- 表の安定ソートの結果表
-
計算すると数値表を表示します。
表の安定ソートの結果表。ラベルを行見出しにし、数値列を入力契約どおりに表示する縦横スクロール対応表です。 ラベル X Y 合計
使い方
- 表の安定ソートのラベル列、数値列、単位、入力行数を確認して表を用意します。
- CSV、TSV、単純空白区切りの一形式に統一し、定義済み列順で貼り付けます。
- 選択欄がある場合は条件を指定して計算し、代表行と結果行数を元表へ照合します。
- 必要なら見出し付きTSVをコピーし、元入力、単位、条件、計算日時と一緒に保存します。
計算式・考え方
各行の合計t_i=x_i+y_iを求め、選択したx・y・totalを主キーとして昇順または降順に並べます。主キーが同じ行は入力時の行番号を第2キーにして順序を保持します。
注意事項
- 安定ソートとは、選んだキーが同じ二行の前後を入力時のまま保つ並べ替えです。このページではX、Y、合計の値を比較し、同値なら元の行番号を第2キーとして明示的に使います。氏名の五十音順やラベル文字列は比較条件へ含めず、同点者を名前順へ勝手に並べ替えません。
- 昇順は小さい値から大きい値、降順は大きい値から小さい値です。負値では例えば−10が−2より小さいという数直線の順序を使います。絶対値順、文字列順、空セルを末尾へ送る規則はありません。合計を選んだ場合だけ各行でX+Yを計算し、XまたはYを選んでも合計列は検算用に表示します。
- 既定例のX昇順は加山、仲井、安井、伊藤、佐久間です。最初と最後だけでなく中央の仲井と安井の位置も確認すると、列選択を取り違えていないか分かります。Y降順や合計降順へ切り替えた結果は別の順序になるため、保存するときは選択した列名と方向をTSVと一緒に記録してください。
- 並べ替えは順位付けと同じではありません。同値へ同順位番号を振らず、上位何件を採用する判断もしません。元データの順序が受付順や時刻順を表す場合、安定性は同値内の情報を保つために役立ちますが、入力順自体が公正な同順位処理であるかは利用者が別に確認します。
- JavaScriptの実装差に依存しないよう、比較関数は値の差を返さず大小を分岐し、同値では有界な元行番号を比較します。巨大で近い値を引き算してInfinityや0へ丸める比較を避けます。Python側も同じキー契約で検証し、正常例、同値境界、重複ラベル異常を定義へ含めています。
- 行を並べ替えても各ラベルとX・Yの組は分離しません。結果を別表へ貼り付けるときにX列だけをコピーすると対応が失われるため、原則として見出しと全列をまとめてコピーしてください。元表へ戻す可能性がある業務では、入力順番号を別に保存して復元経路を残します。
- ソート後の先頭行が最大・最小条件に合うこと、同値行が元順を保つこと、結果行数が入力行数と同じことを最低限の検算にします。値を編集して再計算した場合は古いTSVと混在させず、入力版と計算日時を区別してください。
- 入力は先頭に一つのラベル列、その後にページごとに決まった一〜四つの数値列を置きます。カンマ区切りCSV、タブ区切りTSV、単純な空白区切りの一形式を選び、途中で区切りを混ぜないでください。ヘッダーを付ける場合はlabelと定義済みの英字列名を順番どおりに置きます。列名の似た綴りや列の入れ替わりを推測で補正しないため、貼り付け前に先頭行を照合してください。
- ラベルは一文字以上八十文字以下の単一行文字列です。タブ、改行、制御文字、空ラベルは使えず、同じラベルの重複も拒否します。表計算ソフトで同名行を区別したい場合は番号や期間をラベルへ明示してください。全角と半角、異体字、大文字と小文字を勝手に同一化しないので、見た目が似た名称も元データ側で統一してから計算します。
- 数値セルは符号、小数点、指数表記を含む厳密な十進表現だけを読みます。桁区切りカンマ、通貨記号、百分率記号、単位、NaN、Infinity、十六進数、HTML、JavaScript、数式は数値へ変換しません。空セルを0にする処理もないため、欠測と観測された0を混同せず、欠測方針は元表を作る段階で決めてください。
- 実データは二行以上二百一行以下、入力全体はJavaScriptのUTF-16長で三万二千文字以下、各数値の絶対値は1e100以下です。上限を超えた行を黙って切り捨てず、計算全体を停止します。この境界はブラウザーを長時間占有する入力や説明できない桁あふれを防ぐためで、大規模データ処理や任意精度計算が必要なら目的に合う環境を選んでください。
- 入力の解析、演算、結果表の生成、コピー用TSVの作成は開いているブラウザー内だけで完結します。ファイルをアップロードせず、外部APIやCDNへ表データを送りません。ただし共有端末の画面、OSのクリップボード履歴、ブラウザー拡張、画面共有は本ページから制御できないため、計算に不要な個人名、顧客情報、選挙人情報などを貼り付けないでください。
- 結果表の文字セルはHTMLとして解釈せずtextContentで表示します。コピー用TSVではラベルがイコール、プラス、マイナス、アットマークで始まる場合に先頭へ単一引用符を付け、表計算ソフトが式として実行する危険を減らします。この対策は貼り付け先の全機能を保証するものではないため、外部から受け取ったラベルは貼り付け先でも確認してください。
- 内部の一般数値はIEEE 754 binary64です。和はPython版とJavaScript版で同じ入力順のNeumaier補償和を使い、単純加算より桁落ちを減らしますが、十進小数を二進数へ変換する丸めは残ります。画面の表示桁数が多くても測定精度や統計的確実性が増えるわけではなく、正式帳票の十進丸めや任意精度の規則を自動適用しません。
- 乗算、平方、比率、合計が有限範囲を超えた場合はInfinityへ置き換えずエラーにします。非零の積や比がbinary64の非零範囲を下回って0になった場合も、実測0と区別できなくなるため停止します。極端な尺度を扱うときは単位を変えて数値の大きさを整え、その換算係数と元単位を記録してから再計算してください。
- 結果表にはcaption、列見出し、文字の行見出し、縦横スクロール領域を設けます。狭い画面では表だけを横へ動かし、本文の幅や既存テーマを押し広げません。二百一入力行と合計行を扱うページでは結果が最大二百二行になるため、先頭、中央、末尾を確認し、コピーしたTSVの行数も元表と照合してください。
- 再現性を保つには、元の貼り付け文字列、列名、列順、単位、入力日時、選択条件、結果TSVを同じ記録へ残します。画面上の丸め値だけを書き写さず、生のコピー値と代表行を独立した表計算式や手計算で照合してください。重要な判断では一つのツールの成功表示だけを根拠にせず、公式資料、担当者、専門家の確認を組み合わせます。
- このページは入力された有限データへ指定式を適用する検算道具であり、元データの真正性、母集団の代表性、単位の整合、将来の継続、制度上の確定を保証しません。結果の意味は対象、期間、収集方法、除外規則によって変わります。数値が期待と違うときは丸めだけで合わせず、入力行、列の意味、数式の適用条件から順に見直してください。
- binary64による汎用の検算です。入力定義、単位、母集団、制度条件、正式な丸めは独立に確認してください。
よくある質問
引用符付きCSVや桁区切りカンマを読み込めますか?
読み込みません。引用符、桁区切り、単位文字を外し、labelと定義済み数値列だけの単純な固定列表にしてください。
同じラベルを複数行へ使えますか?
使えません。結果行との対応を一意にするため重複を拒否します。番号、期間、地域など意味のある識別子をラベルへ加えてください。
201行を超えた場合は先頭だけ計算しますか?
しません。切り捨てで標本や議席配分が変わることを避けるため、入力全体をエラーにします。目的を保てる分割や集約方法を別に決めてください。
入力した表はサーバーへ送信されますか?
送信しません。解析、計算、表表示、TSV生成はブラウザー内だけで完結します。共有端末とクリップボードの扱いには注意してください。
表の安定ソートのラベル付き表解析、有界計算、結果表とTSVの生成はclient-onlyで行い、外部API、CDN、アップロード、サーバー保存を使用しません。