ファイル1:
HOGBRM443983 -2522.00 19800826
HOGBRM445985 -2389.00 19801101
HOUSAM1891409 -1153.00 19811228
HOUSAM2004289 -650.00 19860101
HOUSAM2005991 -843.00 19860109
HOCANM388722 -1546.00 19860116
HOUSAM2007297 -1882.00 19860125
HOUSAM2007389 -1074.00 19860128
HOITAM801038516 -691.00 19860128
2列と3列には、それぞれ1列の各IDの生年月日情報(年、月、日)の値と値が含まれています。各出生年にIDがいくつあるのか、他の年のID平均(2列目)がいくらであるかを確認したいと思います。たとえば、file1には1980年、1981年、1986年のIDがそれぞれ2つ、1つ、6つあるため、出力は次のようになります。
output:
1980 2 -2455.5
1981 1 -1153.00
1986 6 -114.33
最初の列は生まれた年を示し、2番目の列は各年内の複数のIDを示し、3番目の列は異なる年のID平均です。
実際のデータが本当に膨大であることを考えると、どんなアドバイスにも感謝します。
ベストアンサー1
そしてgnu datamash
:
cut -c1-35 infile | datamash -W -g 3 count 3 mean 2
cut
生年月日から月と日を削除するには、まずデータを処理する必要があります(入力サンプルの確実な選択であるため、これを使用していますが、すべてのツールが可能です)。
HOGBRM443983 -2522.00 1980
HOGBRM445985 -2389.00 1980
HOUSAM1891409 -1153.00 1981
HOUSAM2004289 -650.00 1986
......
次に、にパイプするだけですdatamash
。また、3番目の列が年ごとにソートされているとします(並べ替えられていない場合を
使用してください)。datamash -s -W -g ...