3

標高勾配に沿って 1 年間収集された気候データがあります。そのような形:

clim <- read.table(text="alti    year    month    week    day    meanTemp    maxTemp    minTemp
350     2011    aug.     31      213    10          14         6
350     2011    aug.     31      214    12          18         6
350     2011    aug.     31      215    10          11         9
550     2011    aug.     31      213    8           10         6
550     2011    aug.     31      214    10          12         8
550     2011    aug.     31      215    8           9          7
350     2011    sep.     31      244    9           10         8
350     2011    sep.     31      245    11          12         10
350     2011    sep.     31      246    10          11         9
550     2011    sep.     31      244    7.5         9          6
550     2011    sep.     31      245    8           10         6
550     2011    sep.     31      246    8.5         9          8", header=TRUE)

高度ごとに 1 つの行のみを持ち、各月と 1 年全体の平均データを計算するために、このデータを再形成しようとしています。次のような形にできれば最高です。

alti    mean_year(meanTemp)   mean_year(maxTemp)   mean_aug.(meanTemp)   mean_aug.(maxTemp)   mean_sep.(meanTemp)   [...]
350     10.333                12.667               10.667                14.3                 10                     ...
550     8.333                 9.833                8.667                 10.333               7.766                  ...

この再形成と計算を実行するアイデアはありますか?

4

3 に答える 3

0

data.tableソリューションの別のバリエーションを次に示しますが、これには現在の が必要devel version, v1.9.5です。

require(data.table) # v1.9.5+
setDT(clim)
form = paste("alti", c("year", "month"), sep=" ~ ")
val  = c("meanTemp", "maxTemp")
ans  = lapply(form, function(x) dcast(clim, x, mean, value.var = val))
Reduce(function(x, y) x[y, on="alti"], ans)

#    alti meanTemp_mean_2011 maxTemp_mean_2011 meanTemp_mean_aug. meanTemp_mean_sep. maxTemp_mean_aug. maxTemp_mean_sep.
# 1:  350          10.333333         12.666667          10.666667                 10          14.33333         11.000000
# 2:  550           8.333333          9.833333           8.666667                  8          10.33333          9.333333
于 2015-07-23T22:48:21.847 に答える