如何重新格式化数据集以使其具有特定的结构而没有for循环?

我赖特

我正在尝试将一些原始数据重组为更紧凑的形式。当前,数据看起来像R代码的以下输出。我希望最终输出中包含时间,ID和所有可能的期望价格的列。然后,我希望每个ID每次仅具有一行,并以不同的期望价格(因此,在这段时间内ID需要多少价格)输入数量。因此,例如,一个特定的ID可能有100的数量1和101的数量2。如果是买入,则值应为负,如果是卖出,则应为正。例如,-1表示100的买入,2表示101的卖出。

我最初尝试通过double for循环进行操作,第一个循环是时间,第二个循环是ID。然后,我可以查看数量列和ID的期望价格,并将它们放入向量中。之后,我将所有矢量合并在一起,然后重复一次。当我尝试在实践中使用它时,这是不可行的,因为代码太慢了,因为有数百个ID和数千次。有人可以帮我更快更清洁的方式吗?

set.seed(1)
time <- rep(seq(1,5), , each = 15)
id <- sample(342:450,75,replace = TRUE)
price <- sample(99:103,75,replace = TRUE)
Desire.Price <- sample(97:105,75,replace = TRUE)
quantity <- sample(1:4,75,replace = TRUE)
data <- data.frame(time = time, id = id,price = price, Desire.Price = Desire.Price,quantity = quantity)
data$buysell <- 0
data$buysell <- ifelse( data$Desire.Price <= data$price, "BUY","SELL")

我希望最终数据集看起来像这样。

Final.df <- data.frame(time=NA,id=NA,"97" = NA,"98"=NA ,"99"=NA,"100"=NA,"101"=NA,"102"=NA,"103"=NA
                       ,"104"=NA,"105"=NA)

基本上,它会压缩原始原始数据,以在每个时间段内连续获取特定ID的所有信息。

编辑:如果一个ID在那个时间没有被采样(例如ID 342不是在时间1中),那么在那个时间段他们应该有一个NA行(所以ID 342在时间1中会有一个NA行)。我对生成样本的代码进行了编辑,使其具有更多ID来反映这一点(这样就不可能在每个时间段都对它们进行抽样)。

乔恩·斯普林

这是一种整理方法。首先,根据“买/卖”对数量进行签名,然后将每个id /时间/Desire.Price的数量相加,然后将其分散为宽格式,并为每个Desire.Price设置一列。

library(dplyr); library(tidyr)
data %>%
  mutate(quantity_signed = if_else(buysell == "BUY", -quantity, quantity)) %>%
  count(id, time, Desire.Price, wt = quantity_signed) %>%
  complete(id, time) %>%  # EDIT to bring in all times for all id's
  spread(Desire.Price, n) %>% View("output")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何格式化具有不同小数位的数字以使其前导零

Java格式化字符串以使其具有小数位

循环数组以重新格式化数据结构

如何格式化具有特定设计的表标题?

如何格式化字符串数字以使其带有逗号和舍入?

有没有办法通过重新格式化来汇总数据?

重新格式化具有唯一行值作为列的数据框

如何重新格式化这个简单的 JSON,使其不会捕获“圆形结构到 JSON”异常?

没有循环的数据集的特定组

如何在Android编辑字段中格式化字符串号以使其带有逗号

如何格式化数据以使其成为R中的时间序列数据

如何格式化具有多个对象返回的json结构?(动态)

如何重新格式化具有 GET 方法的表单提交 url

如何使用 vba 正确重新格式化具有多种变化的维度值?

当变量具有嵌入空间时如何在R中使用重新格式化

有没有更有效的方法来重新格式化熊猫数据框?

有什么办法可以在代码中格式化大量数字以使其更易于阅读?

在ggplot2中格式化特定轴标签而没有基础数据

如何格式化输出以使其输出为句子?

如何格式化汉字以使其适合列?

格式化json数据。如何合并具有与键相同值的json数组?

如何使用javascript格式化来自具有相同类的表列的数据

如何格式化具有父子关系的数组?

如何将带有原始html的CSV重新格式化为已清理的数据集csv?

来自 url 的大型 Dataframe 具有非常奇怪的格式。有人对如何重新格式化有任何建议吗?

如何将此命名空间列表格式化为没有重复的结构化对象?

有没有一种简单的方法可以在Excel中重新格式化?

替换元素以重新格式化数据集

CSS没有格式化ActionLinks