2017-02-08 3 views
-1

私は以下の形式のデータフレームをRで作成していますが、標準エラーバーですべての '読み取り値'の平均曲線を計算したいと思いますが、読み取り値の形式({})のためにエラーが発生しています。これをどうすれば解決できますか?データに{}が含まれているRのデータフレームに平均曲線を作成するにはどうすればよいですか?

注(更新):dfのサイズは9mioオブジェクトを超えています(各installnrの読み取り値が多い)。このような巨大なデータフレームで簡単に実行できる提案はありますか?その要求を反映して更新されました

 installnr readdate readings 
    1 002345 2014-08-17 {0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,2,0} 
    2 002345 2014-08-18 {0,0,0,0,0,0,4,1,0,0,0,0,1,1,1,1,0,1,1,1,1,1,0,1} 
    3 002345 2014-08-19 {0,1,2,1,0,1,1,1,2,0,1,0,1,0,1,0,1,0,1,0,2,1,1,0} 
    4 013459 2014-08-17 {1,0,0,1,0,1,1,1,1,0,1,0,1,0,1,0,0,1,3,1,0,0,1,1} 
    5 127465 2014-08-19 {0,1,0,0,1,0,1,1,1,0,0,1,2,0,1,0,0,1,1,0,0,1,1,1} 
+0

から列の標準偏差を得ることができることを言及しますか – mtoto

+0

読み取り値のクラスは 'factor'です。私はsapplyまたはmeanを試しています($読み取り値、na.rm = TRUE)。 – peny

+0

あなたのデータを 'dput()'してください – mtoto

答えて

0

手段のためです。

これらのリストを文字に変換し、{}を削除し、リストに分割して数値に変換する必要があります。列の意味を取得する最も簡単な方法は、これを行列に作成し、次にcolMeansを使用することです。

df$readings = gsub("[{}]", "", as.character(df$readings)) 
Read1 = strsplit(df$readings, ",") 
Readings = matrix(as.numeric(unlist(Read1)), nrow=length(Read1)) 
colMeans(Readings) 
[1] 0.2 0.2 0.2 0.2 0.4 0.0 1.0 0.8 0.8 0.6 1.0 0.8 0.6 0.8 0.4 0.8 0.6 0.4 1.0 
[20] 0.4 0.8 0.6 0.6 0.6 

あなたは誤差範囲をしたいので、私はあなたがしようとしたコードと何readings` `のクラスがあるとは何か?

apply(Readings, 2, sd) 
[1] 0.4472136 0.4472136 0.4472136 0.4472136 0.8944272 0.0000000 1.7320508 
[8] 0.4472136 0.4472136 0.5477226 0.7071068 0.8366600 0.5477226 0.8366600 
[15] 0.5477226 0.4472136 0.5477226 0.5477226 1.2247449 0.5477226 0.4472136 
[22] 0.8944272 0.5477226 0.5477226 
+0

ありがとうございます。それは行ごとの平均を計算します。 1時間あたり5列すべての平均値(各列の読み値)を計算したい場合はどうすればよいですか? – peny

+0

エラーメッセージが表示されます。マトリックス(as.numeric(unlist(Read1))、nrow = length(Read1)):データ長が行数の小数または複数ではなく、colMeansによって25要素が与えられます何が起こっているのでしょうか? – peny

+0

私はちょうどこれを介して戻った。私は、Read1にはそれぞれ24要素の5行があることがわかります。あなたは 'サプリー(Read1、長さ)'を試して、あなたが得るものを言うことができますか? – G5W

関連する問題