複数の合計を計算する必要があります。入力ファイルは次のとおりです。
DATE|NATION|CITY|FILES|REVENUE|FREQUENCY|INVESTMENT
20170807|USA|VIRGINIA|TIMES|1919150|1779|282075
20170807|USA|NYC|ROADS|92877|41|1599
20170808|USA|PENS|ROADS|133001|7|1
20170808|USA|NYC|TIMES|361625|1592|0
- uniq(日付)で1ドルにつき5ドルの合計
- $4=="TIMES" である各ユニークの合計 $5
- 各ユニークの合計は5ドルです。ここで $4=="ROADS"
- 各ユニークの合計は5ドルです。ここで $4=="ROADS" と $3=="NYC"
- $1 列で並べ替え
私の予想結果
DATE|REV|TIMES|ROADS|ROADS&NYC
20170807|2012027|1919150|92877|92877
20170808|494626|361625|133001|0
1つの列を基準に合計する方法だけを知っています。
awk -F"|" '{FS=OFS="|"}{col[$1]+=$5} END {for (i in col) print i, col[i]}'
ベストアンサー1
awk
解決策は次のとおりです。
awk -F'[|]' 'NR>1 { I[$1]+=$5 }
($4=="TIMES") { T[$1]+=$5 }
($4=="ROADS") { R[$1]+=$5 }
($4=="ROADS" && $3=="NYC"){ RN[$1]+=$5 }
END{ print "DATE|REV|TIMES|ROADS|ROADS&NYC"
for (x in I) printf"%d|%d|%d|%d|%d\n", x, I[x], T[x], R[x], RN[x]
}' infile.txt