数据集是来自车辆的里程数据(它在data.table中)。有许多VIN(车辆ID#)和每个VIN的许多记录。我试图标记每个vin的里程(名为“mi”的列)超过400,000的记录。最终目标是计算每月有多少车辆通过400k mi的门槛。
数据表名为“d”。我尝试使用以下代码创建标志(这类似于我用来标记每个VIN的第一个和最后一个记录的代码,除了我使用unique(d $ vin)代替mi> = 400000):
d[,flag.400k:=0L]
d[mi>=400000L,flag.400k:=1L,mult="first",by=vin]
这是一辆车的结果。它标记 每个 记录,其中mi> = 400000而不是第一个记录,其中mi> = 400000
vin msg.month mi flag.400k
1: 1M1AQ08Y2DM000000 2016-02-01 392278.1 0
2: 1M1AQ08Y2DM000000 2016-02-01 394218.0 0
3: 1M1AQ08Y2DM000000 2016-02-01 396853.0 0
4: 1M1AQ08Y2DM000000 2016-02-01 399803.6 0
5: 1M1AQ08Y2DM000000 2016-03-01 400120.6 1
6: 1M1AQ08Y2DM000000 2016-03-01 402425.7 1
7: 1M1AQ08Y2DM000000 2016-03-01 405176.6 1
8: 1M1AQ08Y2DM000000 2016-03-01 407490.1 1
9: 1M1AQ08Y2DM000000 2016-03-01 410755.9 1
10: 1M1AQ08Y2DM000000 2016-04-01 411009.2 1
这就是我想要发生的事情:
vin msg.month mi flag.400k
1: 1M1AQ08Y2DM000000 2016-02-01 392278.1 0
2: 1M1AQ08Y2DM000000 2016-02-01 394218.0 0
3: 1M1AQ08Y2DM000000 2016-02-01 396853.0 0
4: 1M1AQ08Y2DM000000 2016-02-01 399803.6 0
5: 1M1AQ08Y2DM000000 2016-03-01 400120.6 1
6: 1M1AQ08Y2DM000000 2016-03-01 402425.7 0
7: 1M1AQ08Y2DM000000 2016-03-01 405176.6 0
8: 1M1AQ08Y2DM000000 2016-03-01 407490.1 0
9: 1M1AQ08Y2DM000000 2016-03-01 410755.9 0
10: 1M1AQ08Y2DM000000 2016-04-01 411009.2 0
我觉得我很遗憾,但是我尝试了很多不同的方法并且无法达到预期的效果。请帮忙。