我有一个大的数据表瓜分(超过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做出类似下面,然后加入它回到inital表将其限制为不同from_station_id/to_combos,我将用它来绘制路线(我有经/纬每个站):
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(Divvy$from_station_id.x==94 & Divvy$to_station_id.x == 69)
x freq
1 FALSE 2454553
2 TRUE 81
但是,这显然是劳动密集型的,因为有300个独特的站,超过44k的pos组合。我创建了一个帮助表,以便我可以循环它。
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] etc ...
我觉得可能还有一个更快的dplyr解决方案,可以让我返回每个组合的数量并直接追加它,而无需额外的步骤/表创建,但我还没有找到它。
我对R更新,我搜索了周围/认为我很近,但我无法连接最后一个加入Divvy的结果点。任何帮助赞赏。
我尝试了所有这三种解决方案,并且我不得不说他们都正确地获得了总和,并以奇妙的方式工作。我使用dplyr选项作为“最佳”选项,因为它能够为我提供我想要的有限数量的行,但我认为data.table选项可能是最优雅的。 – ike 2015-04-10 00:33:45
另外:如果其他人希望看到/使用原始数据集,请访问:http://www.divvybikes.com/data – ike 2015-04-10 00:41:31