我必須生成一個 HTML 檔案來顯示我如何在 csv 檔案中聚合資料。
該檔案的結構如下:
num_expediente;fecha;hora;localizacion;numero;cod_distrito;distrito;tipo_accidente;estado_meteorológico;tipo_vehiculo;tipo_persona;rango_edad;sexo;cod_lesividad;lesividad;coordenada_x_utm;coordenada_y_utm;positiva_alcohol;coste;positiva_droga
2022S000001;Enero;Noche;AVENIDA ALBUFERA;19;13;13_PUENTE DE VALLECAS;Choque;Despejado;Vehículo ligero;Conductor;<30;Mujer;0;Sin asistencia;443359,226;4472082,272;0;0;0
2022S000002;Enero;Noche;PLAZA CANOVAS DEL CASTILLO;2;3;3_RETIRO;Choque;Desconocido;Motocicleta;Conductor;31_60;Hombre;0;Sin asistencia;441155,351;4474129,588;1;0;0
2022S000003;Enero;Noche;CALLE SAN BERNARDO;53;1;1_CENTRO;Atropello;Despejado;Motocicleta;Conductor;Desconocido;Desconocido;0;Sin asistencia;439995,351;4475212,523;0;0;0
2022S000004;Enero;Noche;CALLE ALCALA;728;20;20_SAN BLAS-CANILLEJAS;Choque;Despejado;Vehículo ligero;Conductor;31_60;Hombre;2;Leve;449693,925;4477837,552;0;200;0
2022S000004;Enero;Noche;CALLE ALCALA;728;20;20_SAN BLAS-CANILLEJAS;Choque;Despejado;Vehículo ligero;Pasajero;31_60;Mujer;3;Grave;449693,925;4477837,552;0;3000;0
num_expediente是事故的 id fecha是事故的月份 sexo 是事故 中暗示的人的性別 coste 是暗示的人的 事故成本
我想創建一個表格,顯示每月和性別的累計費用。我使用這個腳本:
#! /usr/bin/awk -f
BEGIN {FS=OFS=";"}
function loop(array, name, i) {
for (i in array) {
if (isarray(array[i]))
loop(array[i], (name "[" i "]"))
else
printf("%s[%s] = %s\n",name, i, arr[i])
}
}
NR!=1{
array[$2][$13] =$19
}
END {loop(array, "")
}
但輸出并未匯總成本:
[Enero][Hombre] =
[Enero][Desconocido] =
[Enero][Mujer] =
[Febrero][Hombre] =
[Febrero][Mujer] =
[Febrero][Desconocido] =
[Marzo][Hombre] =
[Marzo][Desconocido] =
[Marzo][Mujer] =
我不知道為什么這不起作用。我不知道如何從這個輸出中生成 html。你也能幫忙嗎?
uj5u.com熱心網友回復:
正如評論中提到的,OP 在printfwhere arr[i]should be中有錯字array[i];雖然這應該解決 OP 當前的問題,但我不確定我是否理解遞回函式呼叫的使用,除非 OP 的實際問題是處理不同維度的陣列。
由于我們正在處理一個已知維度(即 2)的陣列,所以一個簡化的awk想法:
awk -F';' '
NR>1 { array[$2][$13] =$19 }
END { for (month in array)
for (gender in array[month])
printf "[%s][%s] = %s\n", month, gender, array[month][gender]
}
' raw.csv
對于提供的輸入,這會生成:
[Enero][Hombre] = 200
[Enero][Desconocido] = 0
[Enero][Mujer] = 3000
筆記:
- 此解決方案不解決 OP 可能對輸出的任何排序要求
- 對于額外的排序要求,我建議 OP 首先解決當前問題,一旦解決,然后嘗試應用額外的排序要求,然后......
- 如果排序有問題,請提出一個新問題(確保包括完整的月份和性別串列以及兩個組件所需的排序順序)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475845.html
