这个问题是在我有很多模型类型的情况下,每个模型类型都相同,但每个模型的数据量都很小,我想样条以获得更完整的数据集。我希望找到一种方法来做到这一点,而无需一次一个地对每个模型进行一次拼接。
所以我有以下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,但是遇到了错误。我希望避免使用带循环的循环或函数,但如果这是唯一的选择那么......
谢谢,如果我能改进这个问题,请告诉我。
答案 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