如何用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
相关产品推荐
相关产品推荐

