【发布时间】:2020-04-12 04:22:18
【问题描述】:
我目前正在处理一项需要我从 sql 数据库中查询股票列表的任务。 问题在于它是一个列表,其中每个日期交易的股票数量为 1:n。我想计算给定日期每只股票在投资组合中的份额(参见示例)并将其传递给新的数据框。换句话说,日期 x 出现了 2 次(股票 A 一次,股票 B 一次),然后将日期 x 与新值一起出现一次。
'data.frame': 1010 obs. of 5 variables:
$ ID : int 1 2 3 4 5 6 7 8 9 10 ...
$ Date : Date, format: "2019-11-22" "2019-11-21" "2019-11-20" "2019-11-19" ...
$ Close: num 52 51 50.1 50.2 50.2 ...
$ Volume : num 5415 6196 3800 4784 6189 ...
$ Stock_ID : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
RawInput<-data.frame(Date=c("2017-22-11","2017-22-12","2017-22-13","2017-22-11","2017-22-12","2017-22-13","2017-22-11"), Close=c(50,55,56,10,11,12,200),Volume=c(100,110,150,60,70,80,30),Stock_ID=c(1,1,1,2,2,2,3))
RawInput$Stock_ID<-as.factor(RawInput$Stock_ID)
*在本例中不能将日期转换为日期变量
我想要一个新的数据框来生成每天交易的价值、每只股票的权重以及每天的每日回报,同时保持股票数量可变。
我希望我正确翻译了这个问题,以便我能得到帮助。
谢谢!
【问题讨论】:
-
通过
dput(head(df, 20))提供您的数据片段将使人们更容易帮助您。其中df是您的data.frame。 -
Date应该是什么2017-22-13? -
> dput(head(RawInput)) structure(list(ID = 1:6, Date = structure(c(18222, 18221, 18220, 18219, 18218, 18215), class = "Date"), Close = c(52.03, 51.03, 50.1, 50.16, 50.23, 50.68), Volume = c(5415, 6196, 3800, 4784, 6189, 7753), Stock_ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("1", "2"), class = "factor")), row.names = c(NA, 6L), class = "data.frame") -
-日期当然是
2017-12-23或类似的东西