У меня есть набор данных, и я хотел бы применить уравнение к группам моих значений.В частности, я хотел бы применить
sqrt(X^2+Y^2+Z^2)
ко всем значениям в течение определенного времени и переменной
Глядя на данные ниже, я хотел бы сгруппировать свои значения по уникальному времени (TS) и ячейкам(Bin) и возьмите квадратный корень из суммы квадратов для каждого из компонентов XY и Z.
id D Bin value Month Day Year Hour Minute Second TS
1 X V1 -0.320 1 30 2012 13 59 50 2012-01-30 13:59:50
1 Y V1 -0.088 1 30 2012 13 59 50 2012-01-30 13:59:50
1 Z V1 0.171 1 30 2012 13 59 50 2012-01-30 13:59:50
1 X V2 0.368 1 30 2012 13 59 50 2012-01-30 13:59:50
1 Y V2 -0.104 1 30 2012 13 59 50 2012-01-30 13:59:50
1 Z V2 0.008 1 30 2012 13 59 50 2012-01-30 13:59:50
2 X V1 -0.052 1 30 2012 14 0 50 2012-01-30 14:00:50
2 Y V1 0.278 1 30 2012 14 0 50 2012-01-30 14:00:50
2 Z V1 -0.086 1 30 2012 14 0 50 2012-01-30 14:00:50
2 X V2 -0.214 1 30 2012 14 0 50 2012-01-30 14:00:50
2 Y V2 0.118 1 30 2012 14 0 50 2012-01-30 14:00:50
2 Z V2 -0.030 1 30 2012 14 0
Таким образом, на первом месте будет V1 в 13: 59: 50
sqrt(-0.320^2 + -0.088^2 + 0.171^2)
и затем для V2 в момент времени t13: 59: 50
sqrt(0.368^2 +-0.104^2 + 0,008^2)
и т. Д.
Я пытался использовать эту формулу (данные называются "V")
V=aggregate(value~TS+variable,data=V,sqrt((if(V$D=="X")V$value^2)+(if(V$D=="Y")V$value^2))+(if(V$D=="Z")V$value^2))
Но очевидно, что это не работает.Так есть ли у кого-нибудь лучший способ сначала индексировать уникальные группы в наборе данных, а не применять уравнение к указанной группе?