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

如何用R将结构化字符串拆分为多列并从字符串提取列名

从含键值对的字符列自动拆分多列(R语言)

你可以借助tidyverse工具链实现自动提取列名的拆分,无需手动指定列名,步骤如下:

首先加载依赖包:

library(tidyverse)

处理示例数据:

my_df <- tibble(
  address = c("street: AvenueName, number: 1, code: 1234 AB, city: City One", 
              "street: AnotherStreet, number: 99, code: 5678 CD, city: Town Two")
)

# 1. 将每行的键值对拆分为单独行
df_rows <- my_df %>%
  separate_rows(address, sep = ", ")

# 2. 拆分键(列名)和对应值,保留含空格的值不被拆分
df_split <- df_rows %>%
  separate(address, into = c("key", "value"), sep = ": ", extra = "merge")

# 3. 转换为宽表格式,自动用键作为列名
result_df <- df_split %>%
  pivot_wider(names_from = key, values_from = value)

# 可选:将number列转为数值类型
result_df <- result_df %>%
  mutate(number = as.integer(number))

验证结果与预期一致:

expected_df <- tibble(
  street= c("AvenueName", "AnotherStreet"),
  number = c(1, 99),
  code = c("1234 AB", "5678 CD"),
  city = c("City One", "Town Two")
)

all.equal(result_df, expected_df)
# 输出:[1] TRUE

关键说明:

  • separate_rows把每行的多个键值对拆成独立行,确保每个键值对单独处理
  • separate的extra = "merge"参数保证值中包含空格(如City One)时不会被错误拆分
  • pivot_wider自动提取所有出现的键作为新列名,完全无需手动指定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:05:09