我正在尝试在矩阵中创建一个新列,该列是从一个时间点到下一个时间点的变化率。使用以下矩阵,这是一个三步过程。
n <- 20
data <- matrix(rnorm(2 * n), nrow = n)
1)专注于第1列,我想将第2行除以第1行。
2)我想创建一个新列以将答案保留在第2行
3)在3 / 2、4 / 3、6 / 5等行中重复此过程
我假设第1步将涉及到以下简单函数
y<-data[1,1]
z<-data[2,1]
roc<- function(x){(z/y)}
第2步很简单
data$ROC[data[1,] >= 0]<- roc
但是我对步骤3不知所措,而且我不确定100%是否正确编写了函数。
答案 0 :(得分:0)
根据Ryan的评论完成答案。
####data matrix####
n <- 20
data <- matrix(rnorm(2 * n), nrow = n)
####math####
y<-data[,1]/data.table::shift(data[,1])
####new column####
data$ROC[data[1,] >= 0]<- y