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

R语言处理dataframe并为网格病例数据分配优先级新增列咨询

R语言网格病例优先级分配实现

基础场景(无病例数平权)

直接按病例数降序排序后新增优先级列即可,以下是可直接运行的代码:

# 1. 构造示例数据集
df <- data.frame(
  `no of cases` = c(12, 22, 34),
  `grid number` = c(454, 345, 67),
  check.names = FALSE
)

# 2. 按病例数从高到低排序
df_sorted <- df[order(-df$`no of cases`), ]

# 3. 新增priority优先级列
df_sorted$priority <- 1:nrow(df_sorted)

# 查看结果
print(df_sorted)

运行后输出结果和要求的示例完全一致:

no of casesgrid numberpriority
34671
223452
124543

平权场景补充实现

如果存在不同网格病例数相同的情况,需要先准备网格相邻关系映射表(记录每个网格对应的所有相邻网格编号),实现逻辑如下:

  1. 基于相邻关系表,计算每个网格的相邻网格病例总和
  2. 排序时设置双排序条件:第一优先级是no of cases降序,第二优先级是相邻病例总和降序
  3. 按排序后的顺序生成优先级序号即可

示例逻辑代码(需替换其中的相邻关系数据为实际业务数据):

# 示例相邻总和表,neighbors_sum为对应网格所有相邻网格的病例数总和,可根据实际相邻关系计算得到
grid_neighbors <- data.frame(
  grid_number = c(67, 345, 454),
  neighbors_sum = c(45, 30, 22) 
)

# 关联原数据和相邻总和数据
df_merge <- merge(df, grid_neighbors, by.x = "grid number", by.y = "grid_number")

# 双条件排序:先按病例数降序,再按相邻总和降序
df_sorted_equal <- df_merge[order(-df_merge$`no of cases`, -df_merge$neighbors_sum), ]

# 生成优先级
df_sorted_equal$priority <- 1:nrow(df_sorted_equal)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:02