【发布时间】:2018-08-21 08:30:19
【问题描述】:
我今天面临新的挑战!我想分别在我的表格的每一行上执行一个 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) 的长度必须为正
有什么建议可以让我的表格显示每行和每个月观察所属的集群吗?
非常感谢您查看此内容!凯瑟琳
【问题讨论】: