2012-03-08 5 views
0

私は使用するために再構成したいファイルがあります。これらは私が実行しているコマンドです。集計にはfun.aggregateが必要です:デフォルトで使用される長さ

x <- data.frame(read.table("total.txt", sep=",", header=T) 
y <- melt(x, id=c("Hostname", "Date", "MetricType")) 

私は基本的に時間と日付を組み合わせるには、このコマンドを発行するとき、私はエラーとウィンドウのハングを取得します。

yy <- cast(y, Hostname + Date + variable ~ MetricType) 

これはエラーです:

Aggregation requires fun.aggregate: length used as default 
     ServerNa Date  MetricType Hour Value 
19502 server1 01/05/2012 MemoryAVG Hour5 41.830000 
19503 server1 01/05/2012 CPUMaximum Hour5 9.000000 
19504 server1 01/05/2012 CPUAVG+Sev Hour5 9.060000 
19505 server1 01/05/2012  CPUAVG Hour5 30.460000 
19506 server1 01/05/2012   61 Hour5 63.400000 
19507 server1 01/05/2012   60 Hour5 59.300000 
19508 server2 01/05/2012 MemoryAVG Hour5 10.690000 
19509 server2 01/05/2012 CPUMaximum Hour5 1.000000 
19510 server2 01/05/2012 CPUAVG+Sev Hour5 0.080000 
19511 server2 01/05/2012  CPUAVG Hour5 1.350000 

は、サーバーを切断せずにこれを行う簡単な方法はありますか?

yy <- acast(y, Hostname + Date + variable ~ MetricType, fun.aggregate=mean) 

すべての値NAに変身:私は図書館(reshape2)を使用し、これは

。何が起こっているのかわからない?

+0

最初の行に右括弧がありません。 (そして)どのような形の変形? –

+0

'cast'は' reshape2'の 'dcast'と' acast'に置き換えられました – Maiasaura

+0

私はreshape2とdcastとacastを使用しようとしましたが、作業値はNAになりませんでした。何か案は? –

答えて

4

明確化:以下の議論では、私はdcast()ではなくcast()を参照してください。 Maiasaura氏のコメントによれば、パッケージのcast()ファンクションはdcast()(データ出力用)とacast()(アレイ出力用またはマトリックス出力用)という2つの機能によって、reshape2パッケージに置き換えられました。いずれにしても、fun.aggregate引数が必要であるとの私のコメントは、cast(),dcast()、およびacast()と等しくなります。


エラーがdata.frame yは、データの少なくとも2つの行を含んでいなければならない、なぜならcast()への呼び出しでカテゴリ変数の少なくとも1つの組み合わせのためにスローされています。 ?cast(または?dcast)に記載されているように:

If the combination of variables you supply does not uniquely identify one row in the original data set, you will need to supply an aggregating function, ‘fun.aggregate’.

が、これがどのように動作するかを確認するには、以下のコードを実行し、どのように改善することができます。最後のコード行では、引数を使用して、dcast()mean()を使用して、変数の繰り返し組み合わせの値を結合します。その代わりに、集計関数を自分の状況に最も適したものにすることができます。

library(reshape2) 

## A toy dataset, with one row for each combination of variables 
d <- expand.grid(Hostname = letters[1:2], 
       Date = Sys.Date() + 0:1, 
       MetricType = LETTERS[3:4]) 
d$Value <- rnorm(seq_len(nrow(d))) 

## A second dataset, in which one combination of variables is repeated 
d2 <- rbind(d, d[1,]) 

## Runs without complaint 
dcast(d, Hostname + Date ~ MetricType) 

## Throws error asking for an aggregation function 
dcast(d2, Hostname + Date ~ MetricType) 

## Happy again, with a supplied aggregation function 
dcast(d2, Hostname + Date ~ MetricType, fun.aggregate=mean) 
+0

はdcastを見つけることができませんでしたが、私はキャスティングを提出しましたが、まだぶら下がっています: –

+0

'reshape'パッケージの' cast() 'は廃止され、' dcast() 'に置き換えられました。フレーム出力)と 'acast()'(配列や行列出力が必要な場合)です。 'dcast'を見つけるには、まず以下のようにする必要があります:' install.packages( "reshape2");ライブラリ(reshape2) '。しかし、より大きな問題は、 'fun.aggregate'引数に関数の名前を' cast() 'で指定しようとしたかどうかです。それは、それを置き換えた 'dcast'と' acast'関数と同じように、 'cast()'で動作するはずです... –

+0

私は既にreshape2をインストールして試しました。このyy < - dcast(y、Hostname + Date + variable〜MetricType、平均)を使用すると、 すべての値はNAになります –

関連する問題