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

R语言使用dplyr包计算聚类分析转移矩阵的代码问题排查

问题原因分析
  • 第一次代码问题:
    你在第二次按clust分组后使用了summarise()函数,该函数的作用是对分组数据做聚合输出,默认会丢弃未在参数中声明保留的非分组列,因此lt_clust列被直接删除。同时你当前的计算逻辑不需要聚合,只需要对每个clust分组内的行做占比计算即可,用summarise不符合需求。
  • 第二次代码问题:
    你在计算rate时仍然保留了clust+lt_clust的双重分组,每个分组下只有1条数据,因此sum(total)的结果等于当前行的total值,最终得到的比例全为1,total为0时还会出现除以0的NaN错误。
修正后代码
library(dplyr)
dataset %>% 
  mutate(clust = as.factor(clust),
         lt_clust = as.factor(lt_clust),
         tick = 1) %>%
  group_by(clust, lt_clust, .drop = FALSE) %>%
  summarise(total = sum(tick), .groups = "drop_last") %>% # 聚合后仅保留clust层级的分组
  mutate(rate = total / sum(total)) %>% # 按clust分组计算每个lt_clust的占比
  ungroup() %>%
  select(clust, lt_clust, rate)

运行后即可得到你期望的输出:

clust lt_clust rate
  <fct> <fct>    <dbl>
1 k1    k1         0.8
2 k1    k2         0.2
3 k1    k3         0  
4 k2    k1         0.2
5 k2    k2         0.6
6 k2    k3         0.2
7 k3    k1        0.25
8 k3    k2         0  
9 k3    k3        0.75

内容的提问来源于stack exchange,提问作者Alexis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:02