Ho definito un tipo di record per alcuni dati del cliente in F # come segue: -somma condizionale in F #
type DataPoint = {
date: string;
dr: string;
Group: string;
Product: string;
Book: int;
Revenue: int} with
static member fromFile file =
file
|> File.ReadLines
|> Seq.skip 1 //skip the header
|> Seq.map (fun s-> s.Split ',') // split each line into array
|> Seq.map (fun a -> {date = string a.[0]; dr = string a.[1];
Group = string a.[2]; Product = string a.[3];
Book = int a.[4]; Revenue = int a.[5] });;
// creates a record for each line
let pivot (file) = DataPoint.fromFile file
|> ??????????
Per le righe in cui la data, dr, Gruppo e di prodotto sono tutti uguali, voglio poi sum tutte le voci Book and Revenue, producendo una riga ruotata. Quindi una sorta di dichiarazione if dovrebbe andare bene. Sospetto di dover iniziare dal primo punto dati e aggiungere in modo ricorsivo ogni riga corrispondente e quindi eliminare la riga corrispondente per evitare duplicati nell'output.
Dopo averlo fatto, sarò facilmente in grado di scrivere queste righe imperniate su un altro file csv.
Qualcuno può farmi iniziare?
Grande, questo è molto pulito. Testerà e accetterà se funziona. –
Inoltre, grazie per aver segnalato le funzioni di cui ho bisogno per familiarizzare. –
Prego :-). – pad