次の形式のタブ区切りデータを並べ替えたいと思います。
Marketing, Advertising, PR Graduate, Trainees Oil, Gas, Alternative Energy
Marketing, Advertising, PR Graduate, Trainees Public Sector & Services
Marketing, Advertising, PR Graduate, Trainees Recruitment Sales
Marketing, Advertising, PR Graduate, Trainees Secretarial, PAs, Administration
Marketing, Advertising, PR Graduate, Trainees Senior Appointments
Marketing, Advertising, PR Graduate, Trainees Telecommunications
Marketing, Advertising, PR Graduate, Trainees Transport, Logistics
Other Graduate, Trainees Banking, Insurance, Finance
Other Graduate, Trainees Customer Services
Other Graduate, Trainees Education
Other Graduate, Trainees Health, Nursing
Other Graduate, Trainees Legal
Other Graduate, Trainees Management Consultancy
単一のフレーズの単語と複数の単語のフレーズが混在しています。フレーズの単語の間にはカンマがあります。フレーズはタブ区切りです。
テキスト セルがアルファベット順にソートされている別のデータ セットと比較する必要があります。
明らかに、これは直接比較を困難 (不可能) にします。
以下のovastusの提案に従って、次のコードがあります
open System;;
open System.IO;;
#load @"BigDataModule.fs";;
open BigDataModule;;
let sample = "TruncatedData.txt";;
let outputFile = "SortedOutput.csv";;
let sortWithinRow (row:string) =
let columns = row.Split([|'\t'|])
let sortedColumns =
Seq.append
(columns |> Seq.take (columns.Length) |> Seq.sort)
[ columns.[columns.Length - 1] ]
sortedColumns |> String.concat ",";;
sample |> readLines |> Seq.map sortWithinRow |> saveTo (outputFile);;
readLines と saveTo は、ファイルを読み込んで出力を保存するための独自のビッグ データ モジュールの関数です。
このスクリプトから出力を取得すると、残念ながら、並べ替えによって目的の結果が得られず、行がまだアルファベット順に並べ替えられていません。
誰かが私のスクリプトをさらに改良するのを手伝ってくれるなら、私はとても感謝しています.
入力の形式を単純化しすぎて問題を過小評価していたため、時間を無駄にしてしまったことをお詫びします。
EDIT 1:データをcsvファイルとして保存したことを明確にし、F#でこれを行います。
編集 2: データ セットの余分な部分をすべて取り除きました。これらの行内で並べ替えるだけです。私が試したいくつかのコードの詳細も示しました。
編集3:
これは私が入力した元のデータ フレームであり、単純化しすぎています。
Alpha Bravo Tango Delta 15.00
Bravo Delta Tango 20.30
Delta Alpha Tango 6.17
Charlie Tango Foxtrot Alpha 19.13