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

从数据框引号内提取字母字符串并拆分为指定多列

R数据框字符串拆分解决方案

需要将包含JSON数组格式字符串的列,提取引号内的内容并拆分至三列,同时统一字符串大小写(如"Jewelry"转为"jewelry"),以下是两种可行的实现方法:

方法一:使用jsonlite包(推荐,适配JSON格式字符串)

# 加载jsonlite包
library(jsonlite)

# 构造原始数据框
df <- data.frame(string = c('["jewelry","tailor","Jewelry"]', '["apple","banana","orange"]'), stringsAsFactors = FALSE)

# 解析JSON字符串并转换为目标数据框
result_df <- as.data.frame(t(sapply(df$string, function(x) tolower(fromJSON(x)))))

# 重命名列
colnames(result_df) <- paste0("string", 1:3)

# 输出结果
result_df

运行后输出:

string1 string2 string3
1 jewelry tailor jewelry
2  apple  banana  orange

逻辑说明:

  • fromJSON():直接解析JSON格式字符串,转为字符向量,无需手动处理正则匹配。
  • tolower():统一将字符串转为小写,匹配需求格式。
  • sapply() + t():遍历每行字符串,处理后转置矩阵,确保行对应原数据行、列对应拆分后的元素。

方法二:使用stringr包(正则提取方式)

# 加载stringr包
library(stringr)

# 构造原始数据框
df <- data.frame(string = c('["jewelry","tailor","Jewelry"]', '["apple","banana","orange"]'), stringsAsFactors = FALSE)

# 提取所有双引号内的字符串
extracted_list <- str_extract_all(df$string, '(?<=")[^"]+(?=")')

# 转换为数据框并统一小写
result_df <- as.data.frame(do.call(rbind, extracted_list), stringsAsFactors = FALSE) %>%
  mutate_all(tolower)

# 重命名列
colnames(result_df) <- paste0("string", 1:3)

# 输出结果
result_df

逻辑说明:

  • str_extract_all():通过正则表达式(?<=")[^"]+(?=")匹配双引号间的内容,提取所有目标字符串。
  • do.call(rbind, ...):将提取的字符串列表转为矩阵,再转成数据框。
  • mutate_all(tolower):批量将所有列的字符串转为小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:31:58