【发布时间】:2014-06-26 21:38:40
【问题描述】:
我正在尝试在 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 函数来计算每个数字与前一个数字之间的差异。
【问题讨论】:
-
你必须定义你想要的结果。
-
"增加了 4%" 不,零的 4% 为零。如果你不同意数学,你可以发明自己的数学,但我不建议这样做。
-
你可以编程 R 在
x(t)不为零时给你(x(t+1)-x(t))/x(t),在x(t)为零时给你x(t+1)-x(t)(你可以使用?ifelse函数),但是以这种方式不一致是一个真的坏主意。您可能应该更仔细地考虑您的问题。最简单的方法是始终使用绝对差异x(t+1)-x(t)。 -
即使忽略零的问题,您的结果也会产生极大的误导性,因为在没有提供关于数据集大小的太多信息的情况下,百分比会发生很大变化。
-
非常感谢您的 cmets 并为我对基础数学的无知感到抱歉。我刚刚意识到自己的错误并再次思考如何更好地计算我想要做什么