0

这是我的示例矩阵

goog    appl    JPM    BAC    BYD     msft   TIBX
700.30  500.43  43.56  15.34  23.87  32.33   20.44
800.99  600.23  45.33  14.58  32.55  32.45   21.44
750.34  490.22  43.22  16.34  54.22  34.22   19.22 
690.00  540      0     19.45  27.44  36.26   24.54
790.33  650     45.00  18.34  29.47  34.56   23.98

我需要创建另一个矩阵,其中包含从今天到前一天的价格差异。我尝试使用(diff(mat[2,1],mat[2,2])然后执行sapply但无法获得正确的结果diff(mat[2,1],mat[2,2])给我数字(0)。不知道为什么。输出应该是这样的

goog    appl     JPM     BAC    BYD     msft     TIBX
700.30  500.43   43.56   15.34  23.87   32.33    20.44
100.69  99.80    1.84   -0.80   9.55    0.12     1.44
-50.34 -109.99   -2.11   2.34   12.22   0.82    -2.22 
-60.30  49.88    -43.22  3.45   -27.44  2.26     3.54
100.33  90       1.98    2.34   2.47    0.56    -0.98
4

2 回答 2

3

您应该能够调用diff整个矩阵。

> mm<-as.matrix(read.table(text="goog    appl    JPM    BAC    BYD     msft   TIBX
+ 700.30  500.43  43.56  15.34  23.87  32.33   20.44
+ 800.99  600.23  45.33  14.58  32.55  32.45   21.44
+ 750.34  490.22  43.22  16.34  54.22  34.22   19.22 
+ 690.00  540      0     19.45  27.44  36.26   24.54
+ 790.33  650     45.00  18.34  29.47  34.56   23.98",header=T))
> diff(mm)
       goog    appl    JPM   BAC    BYD  msft  TIBX
[1,] 100.69   99.80   1.77 -0.76   8.68  0.12  1.00
[2,] -50.65 -110.01  -2.11  1.76  21.67  1.77 -2.22
[3,] -60.34   49.78 -43.22  3.11 -26.78  2.04  5.32
[4,] 100.33  110.00  45.00 -1.11   2.03 -1.70 -0.56

于 2013-10-03T15:42:41.917 回答
0

试试这个apply

您的数据:

mat <- read.table(text="goog    appl    JPM    BAC    BYD     msft   TIBX
700.30  500.43  43.56  15.34  23.87  32.33   20.44
800.99  600.23  45.33  14.58  32.55  32.45   21.44
750.34  490.22  43.22  16.34  54.22  34.22   19.22 
690.00  540      0     19.45  27.44  36.26   24.54
790.33  650     45.00  18.34  29.47  34.56   23.98", header=TRUE)

rbind(mat[1, ], apply(mat, 2, diff))

##     goog    appl    JPM   BAC    BYD  msft  TIBX
## 1 700.30  500.43  43.56 15.34  23.87 32.33 20.44
## 2 100.69   99.80   1.77 -0.76   8.68  0.12  1.00
## 3 -50.65 -110.01  -2.11  1.76  21.67  1.77 -2.22
## 4 -60.34   49.78 -43.22  3.11 -26.78  2.04  5.32
## 5 100.33  110.00  45.00 -1.11   2.03 -1.70 -0.56
于 2013-10-03T15:18:00.107 回答