我正在处理 NGSim 交通数据,在一个文本文件中有 18 列和 1180598 行。我想在“Local Y”列中平滑位置数据。我知道 R 中有用于数据平滑的内置函数,但它们似乎都不符合我需要应用的公式。文本文件中的数据如下所示:
Index VehicleID Total_Frames Local Y
1 2 5 35.381
2 2 5 39.381
3 2 5 43.381
4 2 5 47.38
5 2 5 51.381
6 4 8 504.828
7 4 8 508.325
8 4 8 512.841
9 4 8 516.338
10 4 8 520.854
11 4 8 524.592
12 4 8 528.682
13 4 8 532.901
14 5 7 39.154
15 5 7 43.153
16 5 7 47.154
17 5 7 51.154
18 5 7 55.153
19 5 7 59.154
20 5 7 63.154
以上数据列只是从原始文件中取出的示例。在这里您可以看到 3 辆车,车辆 ID = 2、4 和 5,但实际上有 2169 辆具有不同 IDS 的车辆。Total_Frames 列告诉我们每辆车的车辆 ID 在第一列中重复了多少次,例如在上表中,车辆 ID 2 重复了 5 次,因此在 Total_Frames 列中为“5”。以下是我需要应用以从“本地 Y”列中删除数据噪声(平滑)的公式:
平滑位置值 = (1/(从 k=iD 到 i+D 的 [EXP^-abs(ik)/delta] 的总和)) * ( ((局部 Y) 的总和 *[EXP^-abs(ik)/ delta] 从 k=iD 到 i+D))
在哪里,
i = 索引# delta = 5 D = 15
我曾尝试使用我所知道的内置函数,但它们并没有按要求平滑数据。我的问题是:R中是否有任何内置函数可以以给定公式的方式进行数据平滑处理,或者可以将此公式作为参数?我需要将公式应用于本地 Y 中的每个值,该值之前有 15 个值,之后有 15 个值(iD 和 i+D),用于相同的车辆 ID。谁能告诉我如何解决这个问题?提前致谢。