如何从kml包中的cld()函数中提取分区值

时间:2016-02-16 06:41:30

标签: r

我正在尝试从cld()包中的kml函数中提取分区值。数据是纵向的(5分)和7个代币。当我使用cld()函数时,它会给我一个图中的分区,在那里我可以看到线条(图中的红色和绿色)。但是,我想找到一种方法(特别是行代码),它允许我提取这两行的x,y坐标,这些坐标稍后将用于分析和绘制其他地方。例如,红线的y坐标为:c(74, 79, 78, 80, 79)。在这里,我给出了代码和生成的图。

#Code
library(kml)
points = rep(1:5, 7)

values = c(92.33181,90.34771,90.16533,89.54722,89.30509,85.27513,85.84612,83.80208,82.08371,82.65119,
           81.36381,83.33078,82.72064,83.22167,82.39488,82.58548,82.54190,79.45408,78.29970,77.89541,
           64.91261,77.20562,79.44067,82.22554,81.84798,87.33230,86.07741,88.16766,87.85872,87.23672,
           83.27685,82.20176,85.21291,84.76475,84.23799)

tokens = rep(1:7, each = 5)

df = data.frame(points, values, tokens)

#clustering of the data
df.cluster <- reshape(df, timevar="points", idvar="tokens", direction="wide")
names(df.cluster) <- c("id", paste("t", 1:(ncol(df.cluster)-1)))
df.cluster.cld <- cld(df.cluster)
kml(df.cluster.cld, nbClusters=2, nbRedrawing=1)

#plot
choice(df.cluster.cld)

Plot generated

当我检查元素df.cluster.cld时,我只能看到这一点,但它似乎没有显示我正在寻找的东西。

print(df.cluster.cld)

~~~ Class: ClusterLongData ~~~
      ~ Sub-Class: LongData ~ 
~ idAll       = [7] 1 2 3 4 5 6 7
~ idFewNA     = [7] 1 2 3 4 5 6 7
~ varNames    = [1] V
~ time        = [5] 1 2 3 4 5
~ maxNA       = [1] 3
~ reverse     = [2x1]
    - mean    = 0
    - SD      = 1

~ traj = [7x5] (limited to 5x10)  :
        t1       t2       t3       t4       t5
1 92.33181 90.34771 90.16533 89.54722 89.30509
2 85.27513 85.84612 83.80208 82.08371 82.65119
3 81.36381 83.33078 82.72064 83.22167 82.39488
4 82.58548 82.54190 79.45408 78.29970 77.89541
5 64.91261 77.20562 79.44067 82.22554 81.84798
... ...

    ~ Sub-Class: ListPartition ~ 
 ~ criterionActif          =  Calinski.Harabatz
 ~ initializationMethod    =  kmeans-
 ~ sorted                  =  TRUE
 ~ criterion values (Calinski.Harabatz):
    -  c2  : 4.851811

1 个答案:

答案 0 :(得分:0)

我试图做同样的事情(提取群集的平均轨迹)并查看绘制轨迹的函数的代码(你在问题中显示的图),我得到的线就是这样做的。如果它仍然有用,这里是代码:

# Substitute the 'c2' for the number of clusters in your case
# 1 in the second argument is the number of the partition you're looking at    
mean.trajectories <- calculTrajMean(df.cluster.cld["traj"], df.cluster.cld['c2'][[1]]['clusters'])

calculTrajMean是&#39; kml&#39;内的函数。包,我只是不知道如何将它与从我的星团中提取轨迹联系起来。我们的想法是在&#39; kml&#39;内查看绘图功能的代码。 package,调用另一个函数,该函数从纵向调用函数plotTrajMeans&#39;包裹和线路在那里。 你得到的是一个矩阵,其中nrow =簇数和ncol =轨迹的时间点数。

希望有所帮助!