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

使用datawizard::standardize生成z分数后pivot_longer绘图报错求助

解决datawizard::standardize后pivot_longer的属性冲突问题

问题根源是datawizard::standardize生成的z分数列带有特殊的dw_transformer属性,不同列的这些属性包含各自的标准化参数(均值、标准差等),结构不统一,导致pivot_longer合并列时触发属性兼容性检查报错。

给你两种直接的解决办法:

方法1:移除现有z分数列的特殊属性

在select之后、pivot_longer之前,把所有.z列转成普通数值类型,剥离额外属性:

df %>% 
  filter(index.visit == visit) %>% 
  select(ends_with(".z")) %>% 
  mutate(across(everything(), as.numeric)) %>% # 移除特殊属性,转为普通数值
  pivot_longer(cols = everything()) %>% 
  ggplot(aes(x = name, y = value)) + 
  geom_quasirandom(size = .1)

方法2:生成z分数时直接禁用属性保留

调用datawizard::standardize时设置keep_attributes = FALSE,这样生成的列就是普通数值,后续操作不会有属性冲突:

# 假设你是这样生成z分数的,修改为:
df <- df %>% 
  mutate(
    across(
      c(variable1, variable2), # 替换成你要标准化的列名
      ~datawizard::standardize(., keep_attributes = FALSE),
      .names = "{col}.z"
    )
  )

# 之后再运行你的绘图代码就不会报错了
df %>% 
  filter(index.visit == visit) %>% 
  select(ends_with(".z")) %>% 
  pivot_longer(cols = everything()) %>% 
  ggplot(aes(x = name, y = value)) + 
  geom_quasirandom(size = .1)

两种方法都能解决问题,选哪种看你的需求:如果已经生成了带属性的.z列,用方法1;如果还没生成,用方法2更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:31:03