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

如何在R语言中提取大括号内的整数并新增布尔变量?

解决方法:提取集合并判断元素存在性

没问题,我来帮你搞定这个需求!我们可以拆成两个核心步骤:先把activity_ids字段里大括号包裹的整数提取出来,再新增一个布尔变量来判断每行的activity_id是否属于这个整数集合。下面我用两种常用的数据分析工具来演示,你按需选用:

用R语言处理

步骤1:提取大括号内的整数集合

我们可以用字符串处理工具去掉activity_ids里的大括号,再把分割后的字符转成整数向量:

# 先构造示例数据框
act <- data.frame(
  activity_id = c(227, 32, 33, 34, 35, 252, 227, 32, 33, 34),
  activity_ids = rep("{227,32,33,34,35,252}", 10),
  stringsAsFactors = FALSE
)

# 加载tidyverse工具包(也可以用base R实现)
library(tidyverse)

# 提取整数集合,保存为列表列
act <- act %>%
  mutate(
    id_collection = str_remove_all(activity_ids, "[{}]") %>%  # 去掉大括号
      str_split(",") %>%  # 按逗号分割成字符向量
      map(as.integer)  # 把每个字符向量转成整数向量
  )

步骤2:新增布尔变量判断存在性

用map2_lgl函数逐行判断activity_id是否在对应的整数集合中:

act <- act %>%
  mutate(
    is_in_collection = map2_lgl(activity_id, id_collection, ~ .x %in% .y)
  )

运行后,act数据框会新增id_collection(存储每行的整数集合)和is_in_collection(布尔值,标记是否存在)两列。


用Python Pandas处理

步骤1:提取大括号内的整数集合

通过字符串替换和拆分,把大括号里的内容转成整数列表:

import pandas as pd

# 构造示例数据框
data = {
    "activity_id": [227, 32, 33, 34, 35, 252, 227, 32, 33, 34],
    "activity_ids": ["{227,32,33,34,35,252}"] * 10
}
act = pd.DataFrame(data)

# 提取整数集合,生成列表列
act["id_collection"] = act["activity_ids"].str.replace(r"[{}]", "", regex=True) \
    .str.split(",") \
    .apply(lambda x: [int(num) for num in x])

步骤2:新增布尔变量判断存在性

用apply函数逐行判断元素是否在集合中:

act["is_in_collection"] = act.apply(lambda row: row["activity_id"] in row["id_collection"], axis=1)

这样处理后,你就能得到包含判断结果的布尔变量啦,示例里所有行的is_in_collection都会是True,因为每个activity_id都在对应的集合里。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:16:33