0

116列と4700行で構成される大きなマトリックスがあります。

各行について、次の形式の標準化された差を計算したいと思います。

(((a2-a1)/a1)*100)+100, where a1 is the previous value and a2 is the next value.

Rでは次のコードを使用しています。

for i in (1:116)

a[i]=(((a[i]-a[i-1])/a[i-1])*100)+100

ただし、次のエラーが発生します。

Error in Ops.data.frame(a[i], a[i - 1]) : 
- only defined for equally-sized data frames

問題は、最初の値が考慮されていないことだと推測しています。最初の値-1は、減算する必要があります。

どうすればこの問題を解決できますか?

データのサブセットは次のとおりです:https ://dl.dropbox.com/u/22681355/su.csv

列ごとに個別に計算したいことを忘れないでください。

4

1 に答える 1

1

あなたの質問は、それをより明確にするために再現可能な例を使用することができます。たとえば、マトリックスがあるが、データフレームに関連するエラーが表示されたとします。あなたのデータがどのように見えるかを知らなければ、答えが正しいかどうかを知ることはできません。

とにかく、次のようにループなしでこれを行うことができると思います。

# Example data:
foo <- data.frame(A = 1:10, B = rnorm(10))

# Compute standardized differences:
(foo[-1,] - foo[-nrow(foo),]) / foo[-nrow(foo),] * 100 + 100
于 2012-11-15T14:14:22.087 に答える