【发布时间】:2020-10-28 04:54:33
【问题描述】:
-
我有一个包含 3 列股票市场数据的数据框:1-Date、2-Price、3-Symbol。
-
符号列是不同的股票代码。
-
我正在尝试获取任何给定两个或多个 Symbol 在任何给定时间范围内的 价格 比率。
-
但是,并非所有符号的数据都可以追溯到其他符号,所以...
-
我可以使用 group_by(Data) 之类的方法,然后删除任何未分组的行吗?
这里,allTickerData 是主要数据框,我根据用户选择的股票代码作为我们比率的分母对其进行过滤。
DenominatedTicker <- allTickerData %>% dplyr::filter(., symbol == input$DenomTickerChoice)
然后我们在主数据框中创建一个新列,RatioPrice,它将每个代码的价格除以用户选择的分母。
但是,我只尝试在日期匹配的情况下执行此操作,并且希望删除任何未分组的日期(日期已经排序)。
UserTickerChoices 是用户选择的代码列表。
activeTickerDataByDate <- allTickerData %>% dplyr::filter(., symbol == input$UserTickerChoices) %>% group_by(., date) %>% dplyr::mutate(., RatioPrice=(Price/DenominatedTicker$Price))
谢谢!
> dput(head(allCoinData))
structure(list(slug = c("bitcoin", "bitcoin", "bitcoin", "bitcoin",
"bitcoin", "bitcoin"), symbol = c("BTC", "BTC", "BTC", "BTC",
"BTC", "BTC"), name = c("Bitcoin", "Bitcoin", "Bitcoin", "Bitcoin",
"Bitcoin", "Bitcoin"), date = structure(c(17167, 17168, 17169,
17170, 17171, 17172), class = "Date"), ranknow = c(1, 1, 1, 1,
1, 1), open = c(963.66, 998.62, 1021.6, 1044.4, 1156.73, 1014.24
), high = c(1003.08, 1031.39, 1044.08, 1159.42, 1191.1, 1046.81
), low = c(958.7, 996.7, 1021.6, 1044.4, 910.42, 883.94), close = c(998.33,
1021.75, 1043.84, 1154.73, 1013.38, 902.2), volume = c(147775008,
222184992, 185168000, 344945984, 510199008, 351876000), market = c(16050407461,
16429024775, 16786368910, 18571869009, 16300254795, 14513695758
), close_ratio = c(0.892969806219017, 0.722110118189679, 0.989323843416365,
0.95922448269866, 0.366823428815733, 0.112113955915761), spread = c(44.38,
34.69, 22.48, 115.02, 280.68, 162.87)), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
如果您使用
dput()命令包含可重现的数据样本,则更容易。否则很难帮助你 -
我应该通过询问进行概括:如何在按公共变量分组后对两个不同大小的数据帧进行矢量化操作。
-
我刚刚尝试了 dput(),它输出的数据量非常大,所以我认为这里太大了,无法粘贴。
-
请
dput(head(allTickerData))