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

R语言row_number()生成序号全为1的问题:需按RDI降序分配患者唯一行号

为受试者分配唯一连续行号的问题解决

需求

生成按RDI从高到低排序,为每位患者分配唯一连续行号的表格。

样本数据集 RDItable

SubjectID(受试者ID)RDISomeOtherCols(其他列)
1004100x
1004100y
1004100z
100299.5x
100299.5y
100299.5z
100185.1x
100185.1y
100185.1z
1003100x
1003100y
1003100z

尝试代码及问题

尝试代码:

attempt1 <- RDItable %>% 
  distinct(SubjectID, RDI) %>% 
  arrange(desc(RDI)) %>% 
  mutate(row_id = row_number(RDI))

执行后得到的结果中row_id全部为1:

SubjectID(受试者ID)RDIrow_id
10041001
10031001
100299.51
100185.11

预期结果

每行row_id为连续唯一值:

SubjectID(受试者ID)RDIrow_id
10041001
10031002
100299.53
100185.14

解决方案

问题出在row_number(RDI)的用法:该函数会按RDI分组,计算每组内的行号,因此相同RDI的行都会得到1。要生成全局连续的行号,直接使用不带参数的row_number()即可,它会基于排序后的整个数据集生成连续编号。

修正后的代码:

fixed_code <- RDItable %>% 
  distinct(SubjectID, RDI) %>% 
  arrange(desc(RDI)) %>% 
  mutate(row_id = row_number())

执行该代码后,就能得到符合预期的结果,每个受试者拥有唯一的连续行号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:15:47