【发布时间】:2014-02-13 08:02:59
【问题描述】:
我想创建一个 data.frame(我知道矩阵会更快,但我需要一个 data.frame)但它需要的时间太长(超过 30 分钟)。我确信有比我已经尝试过的更好的方法。
我有一个大对象(好的,在 read.csv() 之前磁盘上没有那么大 ~=100MB 大小),就像:
Date City V3 V4
1 2008-12-30 NewYork 15 54
2 2008-12-31 NewYork 16 34
[...]
4001 2008-12-30 London 12 12
4002 2008-12-31 London 16 44
[...]
9001 2008-12-30 Madrid 26 54
9002 2008-12-31 Madrid 64 23
...想象一下很多城市(超过 500 个)和很多日期(20 年的每日数据,但有时在不规则的时间序列中(也就是说,马德里可能是唯一一个对 2001- 进行观测的城市) 01-01))。
我想要的是将它们排列在一个 data.frame 中,这样行名称将是日期,列名称将是城市名称,如下所示:
NewYorkV3 LondonV3 MadridV3
2008-12-30 15 12 26
2008-12-31 16 16 64
我尝试过的(试图隐藏最终对象的增长)是:
uniqs <- unique(city.data[ ,2])
city.list <- vector('list', length(uniqs))
for (i in 1:length(uniqs)) {
city.list[[i]] <- subset(city.data, City==as.character(uniqs[i]))[ ,3]
}
city.df <- do.call('cbind', city.list)
我确信有更有效的方法,但它是什么?
我可以将对象加载为 xts 吗?如何?我得到了我无法理解的错误...... 日期的列是否可以具有相同的值?
我可以熔化并重塑物体吗?如何? (再次出错)
谢谢!
【问题讨论】:
标签: r vectorization