【发布时间】:2019-03-22 00:23:13
【问题描述】:
这是我拥有的数据的快照
Date price Industry stock
29/10/2018 3 Airline A
28/10/2018 4 Airline A
27/10/2018 2 Airline A
29/10/2018 5 Bank B
29/10/2018 3 Food C
28/10/2018 4 Bank B
27/10/2018 2 Bank B
27/10/2018 6 Food C
我还有用户输入的价格、开始和结束日期。
dateRangeInput('dateRange',
label = 'Date range input: yyyy-mm-dd',
start = min(dailyprice$Date), end = max(dailyprice$Date))
我已将数据集过滤为反应函数并绘制日期与价格。
现在我需要根据新的计算列绘制图表。
应为该特定股票添加一个新列,其中包含 formula = price - price on start date(input$dateRange[1]),即用户输入日期的价格
如果用户选择 27/10/2018 作为开始日期,则输出应为
Date price Industry stock NewCol
29/10/2018 3 Airline A 1 (3-2)
28/10/2018 4 Airline A 2 (4-2)
27/10/2018 2 Airline A 0 (2-2)
29/10/2018 5 Bank B -1 (5-6)
29/10/2018 8 Food C 2 (8-7)
28/10/2018 7 Bank B 1
27/10/2018 6 Bank B 0
27/10/2018 6 Food C 0
我该如何执行这个计算?
我已经尝试了这些代码,但没有得到想要的结果:
row <- subset(d , Date == input$dateRange[1] )
d$newcol <- eval(parse(text="price - row"), d)
sapply(d, function(d){d-row})
【问题讨论】:
-
查看
dplyr::mutate、data.table包,或者只是d$newcol <- d$price - row['price']。使用eval(parse(几乎总是一个非常糟糕的主意。这里似乎没有什么特别闪亮的东西,所以您应该能够使用任何将新变量添加到数据框的选项