2

問題の解決策をより適切に設計する方法について、いくつかの提案が必要です。

パラメトリック スタディの結果(時系列データ)の多数の Csv ファイルから開始します。いくつかのパラメータが変数に与える影響を分析したいと考えています。アイデアは、パラメトリック スタディの各 ID の結果のテーブルからいくつかの変数を抽出し、変数ごとに data.frame を作成して、いくつかのプロットといくつかの分析を簡単に行うことです。

問題は、一部のパラメーターがパラメトリック スタディのタイム ステップを変更するため、csv がはるかに長いものがあることです。たとえば、1 つの変数は温度です。時間ステップの違いを維持し、1 つのパラメーターを変化させるデルタ T を評価することは可能ですか? Plyrはそれを行うことができますか?または、結果の一部を再サンプリングして、この評価が情報の一部を失うようにする必要がありますか? 私は現時点でこの時点まで達成しています:

head(data, 5)

                  names           Date.Time Tout.dry.bulb RHout TsupIn  TsupOut  QconvIn[Wm2]
1 G_0-T_0-W_0-P1_0-P2_0 2005-01-01 00:03:00             0    50     23 15.84257 -1.090683e-14
2 G_0-T_0-W_0-P1_0-P2_0 2005-01-01 00:06:00             0    50     23 16.66988  0.000000e+00
3 G_0-T_0-W_0-P1_0-P2_0 2005-01-01 00:09:00             0    50     23 13.83446  1.090683e-14
4 G_0-T_0-W_0-P1_0-P2_0 2005-01-01 00:12:00             0    50     23 14.34774  2.181366e-14
5 G_0-T_0-W_0-P1_0-P2_0 2005-01-01 00:15:00             0    50     23 12.59164  2.181366e-14
  QconvOut[Wm2] Hvout[Wm2K]  Qradout[Wm2] MeanRadTin MeanAirTin MeanOperTin
1        0.0000       17.76 -5.428583e-08         23         23          23
2     -281.3640       17.76 -1.151613e-07         23         23          23
3     -296.0570       17.76 -1.018871e-07         23         23          23
4     -245.7001       17.76 -1.027338e-07         23         23          23
5     -254.8158       17.76 -9.458750e-08         23         23          23


> str(data)
'data.frame':  1858080 obs. of  13 variables:
$ names        : Factor w/ 35 levels "G_0-T_0-W_0-P1_0-P2_0",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Date.Time    : POSIXct, format: "2005-01-01 00:03:00" "2005-01-01 00:06:00" "2005-01-01 00:09:00" ...
$ Tout.dry.bulb: num  0 0 0 0 0 0 0 0 0 0 ...
$ RHout        : num  50 50 50 50 50 50 50 50 50 50 ...
$ TsupIn       : num  23 23 23 23 23 23 23 23 23 23 ...
$ TsupOut      : num  15.8 16.7 13.8 14.3 12.6 ...
$ QconvIn[Wm2] : num  -1.09e-14 0.00 1.09e-14 2.18e-14 2.18e-14 ...
$ QconvOut[Wm2]: num  0 -281 -296 -246 -255 ...
$ Hvout[Wm2K]  : num  17.8 17.8 17.8 17.8 17.8 ...
$ Qradout[Wm2] : num  -5.43e-08 -1.15e-07 -1.02e-07 -1.03e-07 -9.46e-08 ...
$ MeanRadTin   : num  23 23 23 23 23 23 23 23 23 23 ...
$ MeanAirTin   : num  23 23 23 23 23 23 23 23 23 23 ...
$ MeanOperTin  : num  23 23 23 23 23 23 23 23 23 23 ...

names(DF)
[1] "G_0-T_0-W_0-P1_0-P2_0" "G_0-T_0-W_0-P1_0-P2_1" "G_0-T_0-W_0-P1_0-P2_2"
[4] "G_0-T_0-W_0-P1_0-P2_3" "G_0-T_0-W_0-P1_0-P2_4" "G_0-T_0-W_0-P1_0-P2_5"
[7] "G_0-T_0-W_0-P1_0-P2_6" "G_0-T_0-W_0-P1_1-P2_0" "G_0-T_0-W_0-P1_1-P2_1"
[10] "G_0-T_0-W_0-P1_1-P2_2" "G_0-T_0-W_0-P1_1-P2_3" "G_0-T_0-W_0-P1_1-P2_4"
[13] "G_0-T_0-W_0-P1_1-P2_5" "G_0-T_0-W_0-P1_1-P2_6" "G_0-T_0-W_0-P1_2-P2_0"
[16] "G_0-T_0-W_0-P1_2-P2_1" "G_0-T_0-W_0-P1_2-P2_2" "G_0-T_0-W_0-P1_2-P2_3"
[19] "G_0-T_0-W_0-P1_2-P2_4" "G_0-T_0-W_0-P1_2-P2_5" "G_0-T_0-W_0-P1_2-P2_6"
[22] "G_0-T_0-W_0-P1_3-P2_0" "G_0-T_0-W_0-P1_3-P2_1" "G_0-T_0-W_0-P1_3-P2_2"
[25] "G_0-T_0-W_0-P1_3-P2_3" "G_0-T_0-W_0-P1_3-P2_4" "G_0-T_0-W_0-P1_3-P2_5"
[28] "G_0-T_0-W_0-P1_3-P2_6" "G_0-T_0-W_0-P1_4-P2_0" "G_0-T_0-W_0-P1_4-P2_1"
[31] "G_0-T_0-W_0-P1_4-P2_2" "G_0-T_0-W_0-P1_4-P2_3" "G_0-T_0-W_0-P1_4-P2_4"
[34] "G_0-T_0-W_0-P1_4-P2_5" "G_0-T_0-W_0-P1_4-P2_6"

P1_4-P2_0 から P1_4-P2_6 までの長さは、時間ステップが 3 分から 1 分に変化するため、37920 の 113760 観測値です。

列の名前ごとにdate.timeと変数の値がある変数ごとにデータベースを分離したいと思います。どうすればそれができますか?

提案をありがとう

4

1 に答える 1

0

時系列の操作に適したデータ構造を使用することを強くお勧めします。この場合、zoo パッケージがうまく機能します。Date.Time 列を使用してデータのインデックス (タイムスタンプ) を定義し、各 CSV ファイルを Zoo オブジェクトに読み込みます。たとえば、zoo() 関数を使用してこれらのオブジェクトを作成できます。

次に、zoo のマージ機能を使用してオブジェクトを結合します。同じタイムスタンプを持つ観測を見つけて、それらを 1 つの行に配置します。マージでは、all=TRUE を指定して、すべてのタイムスタンプのユニオンを取得できます。または、all=FALSE を指定して、タイムスタンプの交点を取得できます。ユニオン (all=TRUE) の場合、欠測値は NA になります。

read.zoo 関数は、データの読み取りに使用するのが難しい場合があります。read.zoo への呼び出しを次のように置き換えることをお勧めします。

table <- read.csv(filepath, header=TRUE, stringsAsFactors=FALSE)
dateStrings <- paste("2005/", table$Date.Time, sep="")
dates <- as.POSIXct(dateStrings)
dat <- zoo(table[,-1], dates)

(私は、Date.Time がファイルの最初の列であると想定しています。それが、table[,-1] と書いた理由です。)

于 2012-10-11T23:19:05.013 に答える