在r中的apply函数中使用kmeans

时间:2018-03-13 07:07:40

标签: r list apply k-means

我今天面临新的挑战!我想在我的表格的每一行上单独执行一个kmeans(在我的情况下,这表示每月的天气数据)获得每个点和月的具有簇号的表。

插图

这里是数据的摘录(我总共有1700个观察结果,这里只有10个)

data<-c( 
 245,      84 ,     99 ,  161,   249, 190 , 136 , 122 ,   157,       128  ,   123 ,     138 ,     106,
 246,      84 ,    101,   163 ,  257, 194 , 138 , 126 ,   163,       134  ,   127 ,     142 ,     108,
 247,     60  ,    80  , 131,   191, 156 ,  90  , 82  ,  106 ,       85  ,    86 ,     106  ,     88,
 248,      60 ,     80  , 131 ,  191, 156,   90 ,  82,    106 ,       85 ,     86 ,     106  ,     88,
 249 ,     60 ,     80 ,  131,   191, 156,   90,   82,    106 ,       85 ,     86 ,     106  ,     88,
 250 ,     58 ,     79 ,  131,   197, 156,   90,   78,    101 ,       84 ,     84 ,     106  ,     88,
 251 ,     60 ,     81 ,  135,   210, 163,   91,   82,    107 ,       88 ,     89 ,     108  ,     89,
 252 ,     67 ,     86 ,  140,   214, 168,  105,   92,    121 ,       99 ,     99 ,     114 ,      93,
 253,      70 ,     89 ,  144,   225, 171 , 110,   97,    128 ,      105 ,    104 ,     118 ,      94,
 254,      70 ,     89 ,  144,   225, 171,  110,   97,    128 ,      105 ,    104 ,     118 ,      94,
 255,      62 ,     82,   134,   205, 163 ,  94,   85,    110 ,       88 ,     90,      109,       89)
data<-matrix(data, nrow=10,ncol=13,byrow=FALSE) 
data<-data.frame(data)
names(data)<-c('ID' ,'January' ,'Febuary', 'March', 'April', 'May' ,'June' ,'July' ,'August' ,'September' ,'October', 'November', 'December')

对每条观察线进行kmeans分类

如您所见,我使用2个群集

kmean<-apply(data[,2:13], 1,  function(x) {kmeans(x, 2)})

这很好用,并创建一个包含kmeans报告的列表(也是列表,其中第二个是簇号)

我可以看一下特定行的簇号,比如说第2行

kmean[[2]]$cluster

挑战

现在我想得到一个表,它为我的数据帧中的每个观察提供了kmean $ cluster的结果。

所以我尝试了以下内容:

cluster<-apply(kmean, 1, function (y) {kmean[[y]]$cluster})

但后来我收到以下错误: 应用错误(kmean,1,function(y){:   dim(X)必须具有正长度

任何建议如何让我的表格显示每行以及每个月观察所属的集群?

非常感谢您对此的看法!凯瑟琳

1 个答案:

答案 0 :(得分:1)

curl http://jenkins.yoursite.com/job/{job_name}/api/json/ | jq .r '.builds'