4

それぞれ2つの列を持つ2つのデータフレームがあります。最初の列はタイムスタンプで、2番目の列にはいくつかの値が含まれています。データフレームの1つは他のフレームよりもはるかに大きいですが、両方に同じタイムスタンプ範囲のデータが含まれています。

これら2つを重ねてプロットすると、時間の違いを示す素敵なプロットが得られます。

ここで、これら2つのデータフレームの時間による絶対差を取得して、同じ長さでタイムスタンプが完全に一致していなくても、それらの違いを示す別のプロットを作成します(または、この情報を使用して箱ひげ図を作成します)。

この例を確認してください。

df1:

timestamp | data
1334103075| 1.2
1334103085| 1.5
1334103095| 0.9
1334103105| 0.7
1334103115| 1.1
1334103125| 0.8

df2:

timestamp | data
1334103078| 1.2
1334103099| 1.5
1334103123| 0.8
1334103125| 0.9

このようなことをどのように達成しますか?

df3 <- abs(df1-df2)

ご覧のとおり、df2のタイムスタンプはdf1と同じではない可能性がありますが、どちらも同じ時間範囲のタイムスタンプを持っています。

もちろん、減算では、タイムスタンプを一致させるか、タイムスタンプの平均値から値を減算する必要があります。

4

1 に答える 1

3

2 つの線形補間器を使用し、2 つのタイムスタンプ セットの和集合で両方を評価することをお勧めします。

df1 <- data.frame(timestamp = c(1334103075, 1334103085, 1334103095,
                                1334103105, 1334103115, 1334103125),
                  data      = c(1.2, 1.5, 0.9, 0.7, 1.1, 0.8))

df2 <- data.frame(timestamp = c(1334103078, 1334103099, 1334103123,
                                1334103125),
                  data      = c(1.2, 1.5, 0.8, 0.9))

library(Hmisc)
all.timestamps <- sort(unique(c(df1$timestamp, df2$timestamp)))
data1 <- approxExtrap(df1$timestamp, df1$data, all.timestamps)$y
data2 <- approxExtrap(df2$timestamp, df2$data, all.timestamps)$y

df3 <- data.frame(timestamp = all.timestamps,
                  data1     = data1,
                  data2     = data2,
                  abs.diff  = abs(data1 - data2))
df3
#    timestamp data1    data2   abs.diff
# 1 1334103075  1.20 1.157143 0.04285714
# 2 1334103078  1.29 1.200000 0.09000000
# 3 1334103085  1.50 1.300000 0.20000000
# 4 1334103095  0.90 1.442857 0.54285714
# 5 1334103099  0.82 1.500000 0.68000000
# 6 1334103105  0.70 1.325000 0.62500000
# 7 1334103115  1.10 1.033333 0.06666667
# 8 1334103123  0.86 0.800000 0.06000000
# 9 1334103125  0.80 0.900000 0.10000000

次に、線形近似に満足できない場合は、スプラインをフィッティングすることを検討できます。

于 2012-04-11T00:49:38.167 に答える