【问题标题】:Filter between threshold在阈值之间过滤
【发布时间】:2014-08-30 10:56:32
【问题描述】:

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

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 和 B) 2)我怎样才能只保留最小大小为 3 的集群(因此不包括集群 1)

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

非常感谢任何帮助。

【问题讨论】:

    标签: r filter cluster-computing threshold


    【解决方案1】:

    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 
    

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2018-05-10
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2021-10-17
      • 2023-01-24
      • 1970-01-01
      • 2021-01-04
      相关资源
      最近更新 更多