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

如何用R提取每月前3家退税申请企业名称并拆分列?

解决方法

假设你用的是R语言,按以下步骤处理即可:

第一步:把字符串格式的企业列表转成可操作的字符向量

你的第二列是类似['firm A','firm B',...]的字符串,不是真正的R列表,先做格式转换:

# 清理字符串并转成字符向量
df$firm_list <- lapply(df[,2], function(x) {
  x <- gsub("^\\[|\\]$", "", x)  # 去掉首尾的[]
  x <- strsplit(x, ",")[[1]]     # 按逗号分割成单个元素
  trimws(gsub("'", "", x))       # 去掉单引号和元素前后的空格
})

第二步:提取前3家企业并新增列

提取每个月份的前3家企业,不足3家的位置用NA填充,再拆分成三列添加到原数据:

# 提取前3家,补全NA
top_firms <- t(sapply(df$firm_list, function(x) {
  c(x[1:3], rep(NA, max(0, 3-length(x))))[1:3]
}))

# 将结果合并到原数据框
df <- cbind(df, as.data.frame(top_firms, col.names = c("top1_firm", "top2_firm", "top3_firm")))

你原来的命令问题

你用的gsub("^'(.*)'.*", "\\", df)有两个明显问题:

  • 替换部分应该用"\\1"来引用捕获到的内容,只写"\\"会直接报错;
  • 这个命令只能提取第一家企业,没法一次性获取前3家,更没法拆分成多列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:16