gpt4 book ai didi

r - 旋转大型数据集

转载 作者:行者123 更新时间:2023-12-02 16:17:01 24 4
gpt4 key购买 nike

我有一个看起来有点像这样的 csv(为了便于阅读而添加了选项卡):

Dimension,    Date,    Metric
A, Mon, 23
A, Tues, 25
B, Mon, 7
B, Tues, 9

我想运行一些距离+ hclust 分析,我之前已经做过了。但我喜欢(也许需要)这种格式:

Dimension,    Mon,    Tues
A, 23, 25
B, 7, 9

我可以使用数据透视表在 Excel 中轻松完成此操作。问题是我有大约 10,000 个维度和大约 1,200 个日期 - 因此源 CSV 大约有 1200 万行 x 3 列。我想要 ~10,000 行 x ~1,200 列。

有没有办法可以在 R 中进行这种转换?执行此操作的一个小 Python 脚本的逻辑很简单,但我不确定它将如何处理如此大的 CSV - 而且我无法想象这是一个新问题。不想重新发明轮子!

感谢您的任何提示:)

最佳答案

或者只是一个传播:

library(tidyr)
spread(df, Date, Metric)
Dimension Mon Tues
1 a 23 25
2 b 7 9

基准

 library(microbenchmark)
microbenchmark(spread(df, Date, Metric))
Unit: milliseconds
expr min lq mean median uq max neval
spread(df, Date, Metric) 1.461595 1.491919 1.628366 1.566753 1.635374 2.606135 100
microbenchmark(suppressMessages(dcast(dt, Dimension~Date)))
Unit: milliseconds
expr min lq mean median uq max neval
suppressMessages(dcast(dt, Dimension ~ Date)) 3.365726 3.416384 3.770659 3.471678 4.011316 7.235719 100

microbenchmark(suppressMessages(dcast.data.table(dt, Dimension~Date)))
Unit: milliseconds
expr min lq

mean median uq
suppressMessages(dcast.data.table(dt, Dimension ~ Date)) 2.375445 2.52218 2.7684 2.614706 2.703075
max neval
15.96149 100

这里的数据表没有sppressMessages

Unit: milliseconds
expr min lq mean median uq max neval
dcast.data.table(dt, Dimension ~ Date) 2.667337 3.428127 4.749301 4.0476 5.289618 14.3823 100

这里的数据表不必猜测:

 microbenchmark(dcast.data.table(dt, Dimension ~ Date, value.var = "Metric"))
Unit: milliseconds
expr min lq mean median
dcast.data.table(dt, Dimension ~ Date, value.var = "Metric") 2.077276 2.118707 2.28623 2.168667
uq max neval
2.320579 5.780479 100

关于r - 旋转大型数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com