在SQL中透视表与在R中透视相同的数据帧
我有一个大约3列60万行的大数据集。旋转后,它将转换为1000列和600行。在SQL中透视表与在R中透视相同的数据帧,sql,sql-server,r,rodbc,Sql,Sql Server,R,Rodbc,我有一个大约3列60万行的大数据集。旋转后,它将转换为1000列和600行。 输入数据子集 Date Id Price 2014/12/03 Id1 100 2014/12/03 Id2 120 2014/12/03 Id3 110 2014/12/03 Id4 105 2014/12/02 Id1 150 2014/12/02 Id2 115 2014/12/02 Id3 140 2014/12/02
输入数据子集
Date Id Price
2014/12/03 Id1 100
2014/12/03 Id2 120
2014/12/03 Id3 110
2014/12/03 Id4 105
2014/12/02 Id1 150
2014/12/02 Id2 115
2014/12/02 Id3 140
2014/12/02 Id4 135
2014/12/01 Id1 165
2014/12/01 Id2 155
2014/12/01 Id3 185
2014/12/01 Id4 195
2014/11/30 Id1 160
2014/11/30 Id2 170
2014/11/30 Id3 180
2014/11/30 Id4 190
数据透视后输出数据
Date Id1 Id2 Id3 Id4
2014/12/03 100 120 110 105
2014/12/02 150 115 140 135
2014/12/01 165 155 185 195
2014/11/30 160 170 180 190
由于数据集很大,哪种性能更高效?1.在SQL中透视并返回到R
2.将原始数据集返回到R并在R中执行透视
我正在使用RODBC从MSSQL服务器获取数据。对此有何建议?我认为“性能效率”在您的案例中没有很好的定义。如果不知道您的机器的规格以及MSSQL运行环境的更多细节,就不可能知道哪一个更快 假设配置原始数据库的人知道他们在做什么,那么SQL环境的设置很可能比R更有效地处理操作
因此,假设所有内容都相对相等,在进入R之前进行此操作。为什么不自己对操作进行基准测试?您可以通过使用Sort with DataView设置索引列来提高DataTable中的性能,这将提高数据检索的性能我刚刚复制了完整的数据集(600000行3列)和
dcast(df,Date~Id)
导致了四分之一秒的时间。从SQL server中获取数据怎么样?在SQL中旋转数据时,RODBC将获取600000个元素的数据,而在另一种情况下,它将获取1800000个元素的数据。这会有任何影响吗?这确实是一个好问题。我猜在SQL中,它不会比在R中花费太多时间,但数据集将我要小三倍。考虑到RODBC的效率不高,我绝对建议用SQL来实现