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

R语言拆分问卷多选答案为多列 生成Others列的异常修复

修复方案

你现有代码的问题出在Others列的清理逻辑不完整:移除所有预设选项文本后,仅处理了开头固定长度的前缀逗号,没有覆盖首尾残留的多逗号、空格场景,当答案全部为预设选项时,就会残留,,这类无效分隔符。
直接替换为以下代码即可,同时优化了原代码硬编码13个选项列的冗余写法,后续调整预设选项只需修改Q1_names向量即可:

Q1_names <- c("Blog ou site pessoal", "Facebook", "Messenger", "Instagram", "Reddit", "Signal", "Telegram", "TikTok", "Twitter", "WhatsApp", "Youtube", "Não me sinto seguro para me expressar em nenhum ambiente digital", "Nenhuma das anteriores")

amb_seg_correct1 <- df1 %>% 
  mutate(
    # 批量生成13个预设选项的0/1标记列
    across(
      .cols = Q1,
      .fns = setNames(
        lapply(Q1_names, function(opt) ~+str_detect(.x, opt)),
        paste0("Q1.", seq_along(Q1_names))
      ),
      .names = "{.fn}"
    ),
    # 修复后的Others列处理逻辑
    Others = str_remove_all(Q1, str_c(Q1_names, collapse = '|')),
    # 清除开头所有连续的逗号、空格
    Others = str_replace(Others, "^[\\s,]+", ""),
    # 清除结尾所有连续的逗号、空格
    Others = str_replace(Others, "[\\s,]+$", ""),
    # 清理后无有效内容则标记为0,否则保留自定义答案(不会误删答案内部自带的逗号)
    Others = if_else(str_remove_all(Others, "[\\s,]") == "", "0", Others)
  )

逻辑说明

  • 预设选项列通过across批量生成,避免手动逐列编写的重复劳动和笔误风险
  • Others列新增首尾全量标点、空格清理,覆盖多逗号残留场景
  • 最终判断逻辑会识别所有只剩分隔符的空内容,统一赋值为0,不会破坏自定义答案内部的逗号、文本结构,示例中带逗号的自定义填写内容可以完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:39:38