1

この質問は、同じクラスのモデル タイプが多数あるが、各モデルのデータ量が少なく、スプラインを使用してより完全なデータセットを取得したい場合に当てはまります。すべてのモデルを一度に個別にスプラインする必要なく、これを行う方法を見つけたいと思っています。

だから私は次のdfを持っています:

mydf<- data.frame(c("a","a","b","b","c","c"),c("e","e","e","e","e","e")
                 ,as.numeric(c(1,2,3,10,20,30)),
                 as.numeric(c(5,10,20,20,15,10)))

いくつかの名前を付けてください:

colnames(mydf)<-c("Model", "Class","Seconds", "Speed")

作成するもの:

> mydf
  Model Class Seconds Speed
1     a     e       1     5
2     a     e       2    10
3     b     e       3    20
4     b     e      10    20
5     c     e      20    15
6     c     e      30    10

したがって、各モデルの Seconds 列と Speed 列にスプラインが必要です。たとえば、モデル「a」でスプラインを使用した場合、モデルとして「a」の要素のみをスプラインします。

お気に入り:

spline(x=mydf[1:2,3], y=mydf[1:2,4])
$x
[1] 1.0 1.2 1.4 1.6 1.8 2.0

$y
[1]  5  6  7  8  9 10

これは機能しますが、何百ものモデルがある場合...

「a」のみを使用して「a」をスプライン化し、「b」に移動して「b」のみをスプライン化するなどです。理想的には、新しいデータフレームとして出力しますが、この時点でエラーが発生しないようにしたいと思います.

plyr で ddply を試しましたが、エラーが発生しました。ループまたはループを含む関数の使用を避けたいと思っていますが、それが唯一のオプションである場合...

ありがとうございます。質問を改善できるかどうかお知らせください。

4

1 に答える 1

-1

これはどうですか:

ddply(mydf, .(Model), summarise, Spline = spline(x = Seconds, y = Speed), 
      Var = c("Seconds", "Speed"))
  Model                        Spline     Var
1     a  1.0, 1.2, 1.4, 1.6, 1.8, 2.0 Seconds
2     a             5, 6, 7, 8, 9, 10   Speed
3     b 3.0, 4.4, 5.8, 7.2, 8.6, 10.0 Seconds
4     b        20, 20, 20, 20, 20, 20   Speed
5     c        20, 22, 24, 26, 28, 30 Seconds
6     c        15, 14, 13, 12, 11, 10   Speed
于 2012-07-05T22:13:00.680 に答える