2017-10-12 9 views
0

これを行う方法を検索しましたが、count(unique())を使用して他の要因を検索していません。データセットの例を以下に示します。階層に基づいてユニークな分類学的カウントを見つける

+------+------+--------------+----------------+-----------+-------+ 
| Site | Date | TaxonID |  Family  | Genus | Count | 
+------+------+--------------+----------------+-----------+-------+ 
| X1 | 2006 | Chironomidae | Chironomidae | -   |  2 | 
| X1 | 2006 | Saetheria | Chironomidae | Saetheria |  1 | 
| X1 | 2006 | Chimarra  | Philopotamidae | Chimarra |  5 | 
+------+------+--------------+----------------+-----------+-------+ 

この場合、行1がカウントされるべきではないのでTaxonIDは上で一意の値をカウントし、これにより、データセット内のその分類学上のレベルよりも低い同定何か、すなわち行2

に、カウントになるカウント属は動作しますが、行2が存在しない例では、これは実行されません。

これは切り捨てられたテーブルです。通常、Phylum、Class、およびOrde​​rも存在し、TaxonIDはこれらのフィールドのいずれかにある可能性があります。これはあなたに正しい結果が得られたがしようとする場合

+2

あなたが何を求めているのか分かりません。 –

+0

私は十分分かりませんでした。私は基本的にユニークなグループの数を探しています。たぶん別の例は、赤いテーブル、赤い椅子、赤いNA、青色のNAです。ここでは、赤いテーブル、赤い椅子、青色のNAは一意であり、下位レベル要素(オブジェクト)が存在する場合、上位レベル要素の色は無視されますが、下位要素の入力がない場合は無視されません。それはそれをより明確にしますか? –

+0

これの結果として何が期待されますか?私はあなたの投稿した例を意味します。 2または3? –

答えて

0

これは、それぞれの分類学的レベルをサブセット化し、データフレームに列を追加することで行うことができ、ネストされたifelseステートメント。成果を向上させる方法がある場合は、教えてください。

は例では、私は投稿:各分類学的レベルについて

data$GenusN <- ifelse(table(data$Genus)[data$Genus] >1, 0, 1) 

を繰り返し、ネストされたifelse文に基づいて、その後の和を。

dataNew <- sum(ifelse(data$Taxon == data$Genus, data$GenusN, ifelse(data$Taxon==data$Family, data$FamilyN, 0))) 
0

は、私は100%わからないんだけど、この1:

SELECT sum(cnt) 
FROM 
    (SELECT Family, 
      IF(count(DISTINCT Genus)=0, 1, count(DISTINCT Genus)) AS cnt 
    FROM your_table 
    GROUP BY Family) AS lo; 
+0

私はこの作業を得ることができませんでしたが、SQLiteはIFまたはASがないためです。私はCASEの使い方を理解しようとしていました。私は実際にはRの解決策を見つけましたが、答えとして投稿します。しかし、あなたの助けをありがとう。 –

関連する問題