样条数据框中的多个因子

时间:2012-07-05 21:09:23

标签: r plyr spline

这个问题是在我有很多模型类型的情况下,每个模型类型都相同,但每个模型的数据量都很小,我想样条以获得更完整的数据集。我希望找到一种方法来做到这一点,而无需一次一个地对每个模型进行一次拼接。

所以我有以下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,但是遇到了错误。我希望避免使用带循环的循环或函数,但如果这是唯一的选择那么......

谢谢,如果我能改进这个问题,请告诉我。

1 个答案:

答案 0 :(得分:-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