在阈值之间过滤

时间:2014-07-09 12:08:14

标签: r filter cluster-computing threshold

我正在使用大型数据集,我正在尝试首先识别满足特定阈值的值集群。那么我的目标是只保留最小长度的簇。以下是一些示例数据和我迄今为止的进展:

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)

使用包evd,我已经识别出值> 3

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

哪个产生

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 

我的问题有两个: 1)我不知道如何将其与原始数据帧相关联(例如,测试A&amp; B) 2)我怎样才能保留最小为3的簇(因此不包括簇1)

我已经研究了各种过滤选项等,但是它们没有根据所需的阈值对数据进行聚类,也没有选择最小的群集大小。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Q1:回归原始数据框:看看Carl Witthoft的回答。他写了一个rle()的变体(seqle()因为它允许人们寻找整数序列而不是重复):detect intervals of the consequent integer sequences

Q2:只保留一定长度的簇:

C1[sapply(C1, length) > 3]

产生足够长的2个簇:

$cluster2
6 7 8 9 
4 4 5 5 

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