On this page
list-ol
Rank
排序题目让受访者按偏好或优先级对一组选项进行排序。
rank 题目类型显示一个选项列表,受访者必须将其拖动排序(或以其他方式从第一到最后排列)。它将结果存储为选项值的空格分隔列表,按所选顺序排列,最高优先级的选项排在第一位。
基本 XLSForm 规范
| type | name | label |
|---|---|---|
| rank priorities | main_priority | 按重要性从高到低排列这些社区需求 |
选项在 choices 工作表中定义,就像 select_one 一样:
survey:
| type | name | label |
|---|---|---|
| rank priorities | main_priority | 按重要性从高到低排列这些需求 |
choices:
| list_name | name | label |
|---|---|---|
| priorities | water | 清洁水源 |
| priorities | health | 医疗保健 |
| priorities | education | 教育 |
| priorities | roads | 道路 |
| priorities | electricity | 电力 |
存储值格式
存储的值是按排名顺序排列的选项值的空格分隔列表(第一个 = 最高优先级):
water education health roads electricity
提取排名位置
使用 selected-at() 获取特定排名处的选项:
| type | name | label | calculation |
|---|---|---|---|
| rank priorities | main_priority | 排列社区需求 | |
| calculate | top_priority | selected-at(${main_priority}, 0) | |
| calculate | second_priority | selected-at(${main_priority}, 1) |
selected-at(${main_priority}, 0) 返回排在第一位的值(索引 0 = 最高排名)。
在重复组中使用 rank-index()
当 rank 在重复组中使用时,rank-index() 允许您从重复组外部引用序数排名:
| type | name | label | calculation |
|---|---|---|---|
| calculate | first_ranked | rank-index(1, ${score}) |
有关 rank-index() 和 rank-index-if() 的完整详情,请参阅函数——重复字段函数。
用途
排序题目通常用于:
- 优先级排序——请社区对发展需求进行排序
- 偏好排序——对产品功能、服务属性或政策选项进行排序
- 考试项目排序——排列流程中的步骤
- 前 N 名选择——与
selected-at()结合,只提取前 1、2 或 3 名
最佳实践
- 保持列表简短(3–7 个项目)——超过 7–8 个选项时,排序会变得认知负担很重。
- 使用清晰、相互排斥的选项标签,避免对"第一"的含义产生混淆。
- 添加提示文本说明排名方向(例如,“拖动排序:第一 = 最重要”)。
- 如果需要确保所有选项都已排名,使用
count-selected(.) = x进行验证。
限制
- 拖动排名控件需要触摸屏或鼠标——在纯键盘环境中可能无法正常工作。
- 在某些旧版移动客户端上,排名控件可能会退化为编号输入界面。
- 您不能部分排名(即只对部分选项进行排名)——所有选项都必须排序。
此页面有帮助吗?