2016-10-16 13 views
-1

私は初心者ですが、私はこれを得ることができません:特定の値の出現を数えることによってデータフレーム内の因子を集計したい(この場合、値「はい」の値)。次のようにN /の多くは、だけでなくありますR:集計データフレーム、条件付き計数係数変数

電流:

Agg Factor1 Factor2 Factor3 
A1 Yes  Yes  Yes 
A1 Yes  Yes  No 
A1 Yes  N/A  No 
A1 N/A  No  N/A 
A2 Yes  Yes  No 
A2 N/A  Yes  N/A 
A2 No  N/A  N/A 

望ましい結果:私は「として

Agg F1 F2 F3 
A1 3 2 1 
A2 1 2 0 

理想的には私は答えが欲しいが、ベースRでありますもちろん、パッケージを使用するより簡単なソリューションがあれば、私も興味を持っています。

データ

dd <- read.table(header = TRUE, na.strings = "N/A", text = 
"Agg Factor1 Factor2 Factor3 
A1 Yes  Yes  Yes 
A1 Yes  Yes  No 
A1 Yes  N/A  No 
A1 N/A  No  N/A 
A2 Yes  Yes  No 
A2 No  Yes  N/A 
A2 N/A  No  N/A") 
+0

MMH、この(@ G.Grothendieckの提案)は動作していないようですが、データにN/Aがあるためと思います。合計はN/Aです。 @ rawrの提案と同じです。 – Nick

+1

カラムを文字に変換し、@ rawrの解決法を使用してください: 'dd [] < - lapply(dd、as.character)'。 N/Aは因子レベルでありNAではないので、 'dd'にはNAsは存在しないことに注意してください。それをN/Aにしようとするならば、 'read.table'文を修正し、' sum(...、na.rm = TRUE) 'を使う必要があります。 –

+0

ご協力いただきありがとうございます。 "、na.rm = TRUE"とし、上のread.tableステートメントを修正しました。 – Nick

答えて

0

ラベルに対する因子仕事に対する比較なので、これは因子の列が因子または文字列であるかどうかに関係なく動作します:

aggregate(dd[-1L]=='Yes',dd[1L],sum,na.rm=T); 
## Agg Factor1 Factor2 Factor3 
## 1 A1  3  2  1 
## 2 A2  1  2  0 
+0

はい、私の問題は頻繁なNAだった---私は木の木を見ることができませんでした。 'na.rm = TRUE'を追加するとそこにいました。ありがとう。 – Nick