我有一个列表,其中包含number of trips (trip)
至Origin (O)
的{{1}},如下所示:
Destination (D)
现在,我正在尝试结合O-D和D-O对的行程次数。例如,df <- data.frame(O=c(1,2,4,4,4,6,6,6,7,7,7,9,9,9,9,10,10,10,11,12,12,12,32,86,108,128,128,157,157,157,157,157),
D=c(2,1,6,7,32,4,7,157,4,6,157,10,11,12,157,9,12,157,9,9,10,157,4,128,128,86,108,6,7,9,10,12),
trip=c(971,971,416,621,330,416,620,1134,621,620,625,675,675,378,439,675,724,472,675,378,724,563,330,610,405,610,405,1134,625,439,472,563)
)
和O=10,D=23,trip=20
之间的行程被合并为O=23,D=10,trip=10
。
因此,当前df:
O=10,D=23,trip=30
将转换为:
> df
O D trip
1 1 2 971
2 2 1 971
3 4 6 416
4 4 7 621
5 4 32 330
6 6 4 416
7 6 7 620
8 6 157 1134
9 7 4 621
10 7 6 620
11 7 157 625
12 9 10 675
13 9 11 675
14 9 12 378
15 9 157 439
16 10 9 675
17 10 12 724
18 10 157 472
19 11 9 675
20 12 9 378
21 12 10 724
22 12 157 563
23 32 4 330
24 86 128 610
25 108 128 405
26 128 86 610
27 128 108 405
28 157 6 1134
29 157 7 625
30 157 9 439
31 157 10 472
32 157 12 563
某些条件可能会影响操作:
> df
O D trip
1 1 2 1941
3 4 6 832
4 4 7 1241
5 4 32 330
7 6 7 1240
8 6 157 2268
11 7 157 1250
12 9 10 675
13 9 11 675
14 9 12 378
15 9 157 878
16 10 9 675
17 10 12 724
18 10 157 944
19 11 9 675
20 12 9 378
21 12 10 724
22 12 157 1126
23 32 4 330
24 86 128 1220
25 108 128 810
中,df
没有相反的指令O=108,D=128
。它只是在输出中保持不变。 O=128,D=100
O
O
和O=10,D=100
中,应保留前者,而应删除后者,并将那些O=100,D=10
组合在一起我当时想让所有对保持可变,并逐条记录对其进行比较,以确定是否有必要进行整合,但是这种操作可能会花费很长时间,并且最多覆盖360,000对时效率不高。
您有什么建议吗?
另一个问题的建议答案使用trip
,data.table
和igraph
,但我更喜欢使用stats
/ dplyr
进行管道操作。