2014-07-09 3 views
1

Je travaille avec un grand ensemble de données et j'essaie d'identifier d'abord des groupes de valeurs qui répondent à des valeurs de seuil spécifiques. Mon but est alors de ne conserver que des grappes d'une longueur minimale. Ci-dessous quelques exemples de données et mes progrès jusqu'ici:Filtrer entre les seuils

Test = c("A","A","A","A","A","A","A","A","A","A","B","B","B","B","B","B","B","B","B","B") 
Sequence = c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10) 
Value = c(3,2,3,4,3,4,4,5,5,2,2,4,5,6,4,4,6,2,3,2) 
Data <- data.frame(Test, Sequence, Value) 

En utilisant EVD paquet, je les clusters identifiés des valeurs> 3

C1 <- clusters(Data$Value, u = 3, r = 1, cmax = F, plot = T) 

qui produit

C1 
$cluster1 
4 
4 

$cluster2 
6 7 8 9 
4 4 5 5 

$cluster3 
12 13 14 15 16 17 
4 5 6 4 4 6 

Mon problème est double : 1) Je ne sais pas comment relier cela à l'image originale (par exemple pour tester A & B) 2) Comment puis-je seulement conserver les clusters avec une taille minimale de 3 (donc excluant le cluster 1)

J'ai examiné diverses options de filtrage, mais ils ne regroupent pas les données en fonction d'un seuil souhaité, sans aucune option pour la taille minimale du cluster. .

Toute aide est très appréciée.

Répondre

0

Q1: se rapporter à l'original dataframe: Jetez un oeil à la réponse de Carl Witthoft. Il a écrit une variante de RLE() (seqle() car elle permet de regarder des séquences entières plutôt que de répétitions): detect intervals of the consequent integer sequences

Q2: ne garder que des grappes de certaine longueur:

C1[sapply(C1, length) > 3] 

rendements 2 grappes qui sont assez longues:

$cluster2 
6 7 8 9 
4 4 5 5 

$cluster3 
12 13 14 15 16 17 
4 5 6 4 4 6 
Questions connexes