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

在R语言中根据Case_ID条件为字符串变量添加指定子串

在R中按规则给Question字段拼接相关性标识

需求说明

根据Case_ID和Question的组合,给Question字符串末尾添加对应相关性标识:

  • 当Case_ID为1234时:QS1拼接"02",QS2、QS3拼接"00"
  • 当Case_ID为4321时:QS1拼接"00",QS2拼接"01",QS3拼接"02"

输入数据构造

先构造示例输入数据:

# 构造输入数据框
input_df <- data.frame(
  Case_ID = c(1234, 4321, 1234, 1234, 4321, 4321),
  Question = c("QS1", "QS1", "QS3", "QS2", "QS3", "QS2"),
  stringsAsFactors = FALSE
)

实现方法

方法1:使用dplyr包(逻辑清晰,推荐)

加载dplyr包后,用case_when定义多条件规则,再通过paste0拼接字符串:

library(dplyr)

output_df <- input_df %>%
  mutate(
    Question = paste0(
      Question,
      case_when(
        Case_ID == 1234 & Question == "QS1" ~ "02",
        Case_ID == 1234 & (Question == "QS2" | Question == "QS3") ~ "00",
        Case_ID == 4321 & Question == "QS1" ~ "00",
        Case_ID == 4321 & Question == "QS2" ~ "01",
        Case_ID == 4321 & Question == "QS3" ~ "02"
      )
    )
  )

方法2:基础R实现(无需额外包)

用嵌套ifelse完成条件判断,搭配paste0拼接字符串:

output_df <- input_df
output_df$Question <- paste0(
  output_df$Question,
  ifelse(output_df$Case_ID == 1234,
         ifelse(output_df$Question == "QS1", "02", "00"),
         ifelse(output_df$Question == "QS1", "00",
                ifelse(output_df$Question == "QS2", "01", "02"))
  )
)

输出结果

运行上述代码后,得到的输出数据如下:

Case_IDQuestion
1234QS102
4321QS100
1234QS300
1234QS200
4321QS302
4321QS201

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:58