OpenRefine能否便捷实现One Hot Encoding?分号分隔字段转布尔列咨询
OpenRefine 分号分隔多选答案转布尔列方案
下面是无需逐列编写判断脚本的通用实现思路,支持自动识别所有出现过的选项,不用提前明确选项范围:
- 拆分多值单元格:选中Answers列下拉菜单,选择
Edit cells → Split multi-valued cells,分隔符填入;,确认后每个学生的多个选项会拆分为独立行,同一名学生会对应多行数据 - 新增选中标记列:点击Answers列下拉菜单,选择
Edit column → Add column based on this column,新列名可设为is_selected,GREL表达式直接写true即可,确认后所有存在的选项行都会标记为布尔值真 - 转置生成选项列:再次点击Answers列下拉菜单,选择
Transpose → Columnize by key/value columns,键列选择「Answers」,值列选择刚创建的is_selected,确认后系统会自动把所有出现过的选项(示例中为A/B/C/D)生成对应新列,学生选过的选项对应单元格为True,未选位置为空 - 补全空值:批量选中所有新生成的选项列,选择
Edit cells → Replace empty cells,填入False即可得到完全符合要求的输出表
如果你的选项范围是固定已知的,也可以用简化脚本方案:提前列全所有选项,为每个选项新建列时通用GREL表达式为value.contains("对应选项"),仅需替换表达式里的选项内容即可,比从零写全判断逻辑效率高很多。
内容的提问来源于stack exchange,提问作者David Toy
相关产品推荐
相关产品推荐

