光沢のあるアプリケーションでデータを計算するのに最適で効率的な方法を見つけるにはいくつかの問題があります。まず、すべての列(ID
を除く)と1つの列との差を計算し、それぞれに(特定の名前の)新しい列を作成し、さらに小さな計算を実行したいと思います。私は例のデータにそれを説明するつもりです:私がやりたい何R他のすべての列の値の差を計算する
ID Zeit600 Zeit650 Zeit700 Zeit750 Zeit800
1 1 601.7826 504.7059 321.2658 264.3038 207.3418
2 2 602.6250 546.6667 316.6667 261.1111 205.5556
がにある:ここでは
data <- structure(list(ID = 1:2, Zeit600 = c(601.782608695652, 602.625
), Zeit650 = c(504.705882352941, 546.666666666667), Zeit700 = c(321.26582278481,
316.666666666667), Zeit750 = c(264.303797468354, 261.111111111111
), Zeit800 = c(207.341772151899, 205.555555555556)), row.names = c(NA,
-2L), .Names = c("ID", "Zeit600", "Zeit650", "Zeit700", "Zeit750",
"Zeit800"), class = "data.frame")
すると、その簡単には見を持っているという形で同じデータであります(それは次ツァイトにT800_the数可能である場合)
カラムZeit800
名前と命名するすべてのカラム(ID
除く)との差を計算します。
*私の元のデータは光沢があり、従って列の数はZeit...
と異なり、列Zeit800
は常に残ります。
ID Zeit600 Zeit650 Zeit700 Zeit750 Zeit800 T800_T600 T800_T650 T800_T700 T800_T750
1 1 601.7826 504.7059 321.2658 264.3038 207.3418 394.4408 297.3641 113.9241 56.96203
2 2 602.6250 546.6667 316.6667 261.1111 205.5556 397.0694 341.1111 111.1111 55.55556
は、私は、小さな計算を実行する列名の次Zeit...
800と数との差を計算したい、とで割り:
結果は次のようになります。上記でポイントで実行された計算値(T800...
)。
800-600/T800_600 = 800-600/394.4408 = 0.507
全体のデータフレームは、次のようになります:
ID Zeit600 Zeit650 Zeit700 Zeit750 Zeit800 T800_T600 T800_T650 T800_T700 T800_T750 Abkuehlrate_T800_600 Abkuehlrate_T800_650
1 1 601.7826 504.7059 321.2658 264.3038 207.3418 394.4408 297.3641 113.9241 56.96203 0.5070469 0.5044321
2 2 602.6250 546.6667 316.6667 261.1111 205.5556 397.0694 341.1111 111.1111 55.55556 0.5036902 0.4397394
Abkuehlrate_T800_700 Abkuehlrate_T800_750
1 0.8777778 0.8777778
2 0.9000000 0.9000000
助けをありがとうだから、例えばID=1
ためのコラムZeit600
のためにこれを計算することができます!
非常によく見えます!私のデータ(この場合は 'mydf')は光沢があり、反応性の列数を持っています。これは、2,3,5またはそれ以外の数の列がある可能性があることを意味します**' Zeit ... '。つまり、私は '... mydf [、2:4] ...'を使うことはできません。解決策は一般的でなければなりません。 –
それは本当に重要ではありませんが、abkuehlraten列を計算するには相違する列が必要です –
興味深いですが、あなたのコードを実行すると、エラーが表示されます: 'data.frame(...、check.names = FALSE)のエラー: 引数の行数の違いが暗示されます:2、3さらに:警告メッセージ: 1:オブジェクトの長さがオブジェクトの長さの倍数ではない 2:In(as、 長いオブジェクトの長さは短いオブジェクトの倍数の倍数ではありません 3:In(as.numeric() gsub( "T"、 ""、compvar)) - as.numeric(gsub( "T"、 ""、: より長いobjec t長さは短いオブジェクトの倍数ではありません。 ' –