1

我正在处理 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。谁能告诉我如何解决这个问题?提前致谢。

4

1 回答 1

0

您可以将公式放在一个函数中,然后使用 R 的应用函数将其应用于数据框的“本地 Y”列中的元素

于 2013-10-04T11:21:31.653 回答