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

为每个个体生成从0/1起始到20的连续唯一Dist列

解决方案

你之前用ntile出现重复值是因为它是等数量分箱工具,当观测数(31-35条)大于指定的分箱数(20)时,必然会有多个观测被分到同一箱,自然会出现重复值。要生成每个个体内唯一连续、起始为0/1且结束接近20的Dist列,直接基于每个ID的Dist_micm计算相对偏移或做线性缩放即可,以下是具体实现:

方案1:基于最小起始值计算相对偏移(保留原始间距)

这个方案会保留每个观测间的实际微米间距,仅将每个ID的起始点对齐到0或1,结束点会自然落在20左右(因为每个个体覆盖20微米)。

起始为0

library(dplyr)

df <- df %>%
  group_by(ID) %>%
  mutate(Dist = Dist_micm - min(Dist_micm)) %>%
  ungroup()

起始为1

library(dplyr)

df <- df %>%
  group_by(ID) %>%
  mutate(Dist = Dist_micm - min(Dist_micm) + 1) %>%
  ungroup()

方案2:线性缩放至严格0-20或1-20范围

如果希望结束点严格落在20(不管原始观测的实际总间距是否刚好20微米),可以用线性缩放把每个ID的Dist_micm映射到指定区间:

缩放至0-20

library(dplyr)
library(scales)

df <- df %>%
  group_by(ID) %>%
  mutate(Dist = rescale(Dist_micm, to = c(0, 20))) %>%
  ungroup()

缩放至1-20

library(dplyr)
library(scales)

df <- df %>%
  group_by(ID) %>%
  mutate(Dist = rescale(Dist_micm, to = c(1, 20))) %>%
  ungroup()

以上两种方案生成的Dist列都能满足:每个ID内数值唯一连续、起始符合要求、结束接近或等于20,完全适配统一绘图的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:55:15