うるう年 - 推定値

うるう年 - 推定値

次のテーブル(table.txt)があります。

YEAR MONTH DAY RES
1971 1     1   1345
1971 1     2   1265
1971 1     3   1167

各時系列の長さはからまで1.1.1971です31.12.2099。残念ながら、一部の時系列にはうるう年とその値がありません(たとえば、1972年はうるう年なので、2月は29日でなければなりませんが、私の時系列は1972年2月に28日しかありません)。たとえば、現在のテーブルの1972年2月末の状況は次のとおりです。

YEAR MONTH DAY RES
1972 2     27  100
1972 2     28  101
1972 3     1   102

これはうるう年を考慮していないので間違っています。代わりに、次のように前の日付と次の日付の値を推定して、各うるう年(明らかに2月29日)の行方不明の日付を時系列に含めたいと思います。

YEAR MONTH DAY RES
1972 2     27  100
1972 2     28  101
1972 2     29  101.5
1972 3     1   102

shell / bashを使用してこれを行う方法はありますか?

ベストアンサー1

たぶん、次のようなものがあります。

awk '
  function isleap(y) {
    return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)
  }
  $2 == 3 && $3 == 1 && isleap($1) && last_day != 29 {
    print $1, 2, 29, (last_data + $4) / 2
  }
  {print; last_day = $3; last_data = $4}' file

おすすめ記事