如何将聚类后的簇1保存为独立数据框?解决California未识别问题
解决K-Means聚类后筛选簇1数据的问题
问题根源
你用fit$cluster[11]直接取第11个簇标签的做法有两个明显问题:
- 没法保证第11个观测就是California,只要数据顺序稍有变动,这个索引就会失效
- 单独提取单个簇标签后,没法和原始数据的行对应上,自然会导致筛选出来的结果里找不到目标观测
正确操作步骤
假设你的原始时间序列数据框叫original_data,要么行名是州名(比如"California"),要么有一列专门记录州名(比如state列),K-Means的拟合结果存在fit里:
给原始数据绑定聚类标签
把每个观测对应的簇标签直接加到原始数据里,确保一一对应:# 直接给原始数据新增cluster列,存储每个观测的簇标签 original_data$cluster <- fit$cluster筛选簇1的数据
用新增的cluster列做条件筛选,就能准确得到簇1的所有数据:new_data <- subset(original_data, cluster == 1)验证California是否在结果里
可以用下面的代码确认:# 如果行名是州名 any(rownames(new_data) == "California") # 如果有state列 any(new_data$state == "California")
额外排查技巧
要是还不确定California的簇标签,先确认它在原始数据中的位置和对应的簇:
# 找到California的行索引 cal_index <- which(rownames(original_data) == "California") # 查看它的簇标签 fit$cluster[cal_index]
这样能先确认它确实属于簇1,再进行筛选就不会出问题。
内容的提问来源于stack exchange,提问作者Jared Greathouse
相关产品推荐
相关产品推荐

