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

所以我想要每个模型的秒和速度列上的样条。因此,例如,如果我在模型“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 回答