R计算分母为0时的百分比变化

时间:2014-06-26 13:18:38

标签: r diff

我想在R做一个简单的任务 我的载体是这样的:

data<-c(0.00,0.04,0.17,0.17,0.17,0.17,0.13,0.00
        0.00,0.00,1.55,1.73,1.73,1.73,1.73,0.19)

我正在尝试计算从一个数字到下一个数字的百分比变化。 公式是一个简单的百分比公式:

(下一个号码 - 前一个号码)/上一个号码。

但是一些数字对存在轻微问题。例如,为了计算从第一个到第二个数字的百分比变化,公式为:

(0.04-0.00)/0.00 
即使实际上有4%的增加,哪个R将作为Nan返回。第二个和第三个数字之间的百分比变化很容易:

(0.17-0.04)/0.04 

但对于以0.00为单位进行除法的对是有问题的。有什么方法可以告诉R,如果方程除以零,而不是除以零,并将(下一个数字 - 前一个数字)之间的差异表示为百分比。

我使用diff函数计算每个数字和前一个数字之间的差异。

1 个答案:

答案 0 :(得分:1)

这样的事情可能会起作用,尽管如上所述,你的数学仍然是个谜。

ifelse(data[-length(data)] != 0, diff(data)/data[-length(data)], diff(data))

## [1]  0.0400000  3.2500000  0.0000000  0.0000000  0.0000000 -0.2352941 -1.0000000  0.0000000  0.0000000  1.5500000  0.1161290  0.0000000  0.0000000  0.0000000 -0.8901734