2017-12-12 3 views
1

Averageラムダ式が正確に機能する方法を検索しましたが、見つかりませんでした。中性になる可能性のある特定のデータの平均を計算する

私の問題は:私はいくつかの感情分類が異なる方法で表されていることです。たとえば、肯定的な文章は0より大きい数で表されます.1から無限大(1,2,5,100 ....)、負の文でも同じ方法ですが、数字が<,0 (-1、-2 .....) - それを表現するより良い方法ではないことは分かっています。

そして、正の発生平均を計算する必要があります。 SOFの質問からのすべての答えはここで見つけました。すべての値を合計し、合計を分けて平均を求めます。それで大丈夫です。

例えば、私が11の文を持ち、10が値= 1、(合計= 10)、1つの文が負の値= -10の場合、平均は10-10/11 = 0になります。

var average = context.CatchDetails.Where(x => x.Monitoring.Client.Id == custmrid 
      && x.Data.published >= datai2 
      && x.Data.published <= dataf2 
      && x.Monitoring.id == monitoring).ToList().Average(y => y.Sentiment); 

私がやっていることは、すべての肯定的な文章を数え、総文数で割ることです。例:

総数= 11
正カウント= 10

10月11日= 0.9090 90,90%陽性出現です。

var positive = context.CatchDetails.Count(x => (x.Monitoring.Client.Id == custmrid) 
      && x.Data.published >= datai2 && x.Data.published <= dataf2 
      && x.Monitoring.id == monitoring 
      && x.Sentiment > 0); 

var total = context.CatchDetails.Count(x => (x.Monitoring.Client.Id == custmrid) 
      && x.Data.published >= datai2 && x.Data.published <= dataf2 
      && x.Monitoring.id == monitoring); 

double mediaPositive = ((double)positive/(double)total); 

これを行う可能性はありますか?

キーワード:

How to get words average length using Lambda Expression

Getting an average from a C# array

+0

uは単に項目の数によって、すべての正および負の値の合計を分裂しない理由:

var count = data.Count(); var total = data.Select(x => x.Sentiment > 0).Sum(x => x.Sentiment); // Avoid divide by zero if no data... var avg = count > 0 ? total/count : defaultValue; 

はしかし、あなたはちょうど2つの異なるカウントをたいように見えますか? – dotNET

答えて

1

あなたは別のLINQ演算子から渡されたデータを操作することができます

var avg = data.Select(x => x.Sentiment > 0 ? x.Sentiment : 0) 
       .Average(); 

だから、ゼロとしてすべての負の値を扱います。

一部の項目の値を無視してカウントに含めても差し支えない場合は、平均計算を自分で行う必要があります。

var totalCount = data.Count(); 
var positiveCount = data.Select(x => x.Sentiment > 0).Count(); 
// Ignore totalCount == 0! But force floating point calc. 
var res = (double)positiveCount/totalCount; 
+0

ありがとうございます。あるLINQオペレータから別のLINQオペレータに渡されたデータを操作できることはわかりませんでした。私の問題を解決しました。 –

関連する問題