我有一个大型的数据表Divvy(超过240万条记录),它看起来像这样(一些列已删除):
X trip_id from_station_id.x to_station_id.x
1 1109420 94 69
2 1109421 69 216
3 1109427 240 245
4 1109431 113 94
5 1109433 127 332
3 1109429 240 245
我希望能够找到每个站点到对面站点的旅行次数。例如,
From X To Y Sum
94 69 1
240 245 2
等等,然后使用dplyr将其与初始表合并,生成以下类似的内容,然后将其限制为不同的起始站点/终点组合,我将使用它来绘制路径(每个站点都有纬度/经度):
X trip_id from_station_id.x to_station_id.x Sum
1 1109420 94 69 1
2 1109421 69 216 1
3 1109427 240 245 2
4 1109431 113 94 1
5 1109433 127 332 1
3 1109429 240 245 1
我成功地使用了count来获取一些信息,例如:
count(Divvy$from_station_id.x==94 & Divvy$to_station_id.x == 69)
x freq
1 FALSE 2454553
2 TRUE 81
但是这显然需要大量的人力,因为有300个唯一的站点,所以可能会有超过44k种组合。我创建了一个助手表,想着可以循环它。
n <- select(Divvy, from_station_id.y )
from_station_id.x
1 94
2 69
3 240
4 113
5 113
6 127
count(Divvy$from_station_id.x==n[1,1] & Divvy$to_station_id.x == n[2,1])
x freq
1 FALSE 2454553
2 TRUE 81
我感觉像一个循环,就像这样:
output <- matrix(ncol=variables, nrow=iterations)
output <- matrix()
for(i in 1:n)(output[i, count(Divvy$from_station_id.x==n[1,1] & Divvy$to_station_id.x == n[2,1]))
应该可以工作,但仔细想想,仍然只返回300行,而不是44k,所以它必须循环回去并执行n[2]&n[1]等操作...
我觉得也可能有一个更快的dplyr解决方案,可以让我返回每个组合的计数,并直接附加它,而不需要额外的步骤/表格创建,但我还没有找到它。
我对R较为陌生,我已经搜索过/认为我接近了,但我无法连接那个结果与Divvy。任何帮助将不胜感激。