我的数据来自KDB数据库,并作为列表返回。
该列表名为stockdata
,是[8]的列表--- [1]是日期[2]是股票代码等,[8]是股票的中间价格。
我希望创建stockdata[[9]]
来自stockdata[[8]]
的回复
换句话说,即使它不是一个矩阵(它作为一个列表返回),它看起来像这样
[1] [2] etc etc [8] [9]
stock date etc etc 100
stock date etc etc 102 0.02 (ie 2%)
stock date etc etc 104 0.0196 (ie 1.96%)
为相当随意的问题道歉,但我正在努力处理清单 - 显然也没有第一次回报,即如果我们有200行,我们只有199回报。
非常感谢答案 0 :(得分:0)
您可能需要查看? diff
。所以我假设这是你在矩阵表示法中实际寻找的东西:
stockdata[ i, 9 ] = (stockdata[ i, 8 ] - stockdata[ i - 1, 8 ]) / stockdata[ i - 1, 8 ]
你可以通过
轻松实现这一目标stockdata[[9]] <- c(
NA,
diff( stockdata[[8]] ) / stockdata[[8]][ -length( stockdata[[8]] ) ]
)
答案 1 :(得分:0)
如何将列表转换为数据框,只使用向量数学计算列:
stockdata<-data.frame("stock","blah","blah","blah","blah","blah","blah",seq(100,120,2))
# or stockdata<-data.frame(stockdata) to convert your list
colnames(stockdata)<-paste0("C",1:8)
stockdata$C9<-c(stockdata[1,8],stockdata[1:nrow(stockdata)-1,8])
stockdata$C9<-(stockdata$C8-stockdata$C9)/stockdata$C9
stockdata
C1 C2 C3 C4 C5 C6 C7 C8 C9
1 stock blah blah blah blah blah blah 100 0.00000000
2 stock blah blah blah blah blah blah 102 0.02000000
3 stock blah blah blah blah blah blah 104 0.01960784
4 stock blah blah blah blah blah blah 106 0.01923077
5 stock blah blah blah blah blah blah 108 0.01886792
6 stock blah blah blah blah blah blah 110 0.01851852
7 stock blah blah blah blah blah blah 112 0.01818182
8 stock blah blah blah blah blah blah 114 0.01785714
9 stock blah blah blah blah blah blah 116 0.01754386
10 stock blah blah blah blah blah blah 118 0.01724138
11 stock blah blah blah blah blah blah 120 0.01694915