0

長い形式で繰り返し測定された大きなデータフレームがあります (41764 観測)。データフレームを要約し、異なる個人ごとに 1 つの値を持つ新しいデータフレームを作成しようとしています (合計 3112 の観測値)。私はddplyサマライズを使用していますが、私の特定のケースの背景は、繰り返し測定の最初と最後の値に違いがある新しいデータフレームにありますか? .

私はこのコードを使用しています

df2 <- ddply(df1, .(indv), summarize, df1['value1'], df1['value2'])  

しかし、これを実行すると、このエラーが発生します

Error: cannot allocate vector of size 991.6 Mb
In addition: Warning messages:
1: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
2: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
3: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
4: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)

これを回避する方法がわかりません。すべてのメモリ常駐データフレームをファイルとして保存し、R を閉じてから、これらを R にインポートし直しました。これにより、少なくとも最初はメモリが節約されるようですが、ddply を実行するとまだ RAM が不足しています

このマシンには 8 GB の RAM があり、これらすべてを R で使用できます。この問題に対処するために何ができるか知っている人はいますか?

おそらく、ddply の要約を使用するべきではありません。これを行うためのより良い方法があるでしょうか?

編集:コマンドを間違って発行していたようです。みたいなコマンド

df2 <- ddply(df1, .(indv), summarize, value1=(tail(value1, 1)), value2=(tail(value2, 1)), group=(tail(group, 1)))

私が探している結果が得られるようです。

4

1 に答える 1

1

OK、LostBrit の助けのおかげで、間違ったコマンドを発行していたことに気付きました (または、そもそも何をしようとしていたのかがはっきりしないかもしれません)。このコードは私が望む結果を与えるようです:

df2 <- ddply(df1, .(indv), summarize, 
       value1=tail(value1, 1), 
       value2=tail(value2, 1), 
       group =tail(group, 1))

みんな助けてくれてありがとう!

于 2013-07-13T17:12:26.787 に答える