我正在处理 NGSim Traffic 数据,文本文件中有 18 列和 1180598 行。我想平滑“本地 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=i-D 到 i+D 的 [EXP^-abs(i-k)/delta] 的总和)) * ( ((Local Y) *[EXP^-abs(i-k) 的总和) /delta] 从 k=i-D 到 i+D))
哪里,
i = 索引# 增量 = 5 D = 15
我尝试过使用我所知道的内置函数,但它们没有按要求平滑数据。我的问题是:R中是否有任何内置函数可以按照给定公式的方式进行数据平滑或者可以将此公式作为参数?我需要将公式应用于 Local Y 中的每个值,对于相同的车辆 ID,该值之前有 15 个值,之后有 15 个值(i-D 和 i+D)。谁能告诉我如何解决这个问题?预先感谢。
您可以将公式放入函数中,然后使用 R 的 apply 函数将其应用到数据框的“Local Y”列中的元素
@Umair Durrani,从文献来看,NGSIM 数据集相反有 25 个属性/列。参考:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9832594