R - 在两列之间应用百分比变化,同一行

时间:2017-06-14 00:26:19

标签: r

在Close和10ema Column之间执行%更改。期望的输出是%差异关闭列[3]

我在数据框中有我的数据

   Close            10ema   % Difference Close – 10ema / 10ema *100
12.81398            NA             NA
13.2636             NA             NA
13.54461            NA             NA
13.76941            NA             NA
13.82561            NA             NA
13.88181            NA             NA
13.76941            NA             NA
13.88181            NA             NA
13.4884             NA             NA
13.4884         13.572704   -0.621128995
13.376          13.53693964 -1.188892325
13.376          13.50767788 -0.974837314
13.4884         13.50417281 -0.11679956
13.4322         13.49108685 -0.436487059
13.376          13.47016197 -0.699041087
13.376          13.45304161 -0.572670563
13.376          13.43903404 -0.469037013

我希望执行Close和10ema之间的%差异。

在excel中我会使用:

= sum(关闭1 - 10ema)10ema * 100

我正在使用的R代码:

new.dataframe$close.prct.ema.10 <- apply(new.dataframe[,c('Close', 'ema.10')], 1, function(x) { (x[1]-x[2]/x[2]) * 100 } )

我在[,c('关闭','ema.10')中指定要应用该功能的列。

也是函数告诉代码逐行执行函数之前的1,如:1,function(x)

这部分(x [1] / x [2] / x [2])* 100})试图说: 关闭 - ema10 / ema 10 * 100

1和2指向列名称在[,c('关闭','ema.10')中声明的顺序

然而,结果不起作用。代码对我来说很好,有道理,我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

答案如下。这是语法的订单问题。以下是在两列之间应用百分比变化的工作解决方案。

new.dataframe$close.prct.ema.10 <- apply(new.dataframe[,c('Close', 'ema.10')], 1, function(x) { (x[1]-x[2])/x[2] * 100 } )

(x [1] -x [2])/ x [2] * 100

首先注意括号(x1-x2)/ 2 * 100