You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将聚类后的簇1保存为独立数据框?解决California未识别问题

解决K-Means聚类后筛选簇1数据的问题

问题根源

你用fit$cluster[11]直接取第11个簇标签的做法有两个明显问题:

  • 没法保证第11个观测就是California,只要数据顺序稍有变动,这个索引就会失效
  • 单独提取单个簇标签后,没法和原始数据的行对应上,自然会导致筛选出来的结果里找不到目标观测

正确操作步骤

假设你的原始时间序列数据框叫original_data,要么行名是州名(比如"California"),要么有一列专门记录州名(比如state列),K-Means的拟合结果存在fit里:

  1. 给原始数据绑定聚类标签
    把每个观测对应的簇标签直接加到原始数据里,确保一一对应:

    # 直接给原始数据新增cluster列,存储每个观测的簇标签
    original_data$cluster <- fit$cluster
    
  2. 筛选簇1的数据
    用新增的cluster列做条件筛选,就能准确得到簇1的所有数据:

    new_data <- subset(original_data, cluster == 1)
    
  3. 验证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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:55:02