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

如何将指定文本格式的民族分类数据转换为DataFrame?

将文本转换为DataFrame的R实现

可以通过文本处理和正则提取的方式,把给定的文本转换成目标格式的DataFrame,以下是具体实现:

方法一:Base R 实现

text <- "
VALUE Ethnic
1 = 'White - British'
2 = 'White - Irish'
9 = 'White - Other'
;
"

# 拆分文本为单行并过滤无效内容
lines <- strsplit(text, "\n")[[1]]
valid_lines <- lines[lines != "" & !grepl("VALUE|;", lines)]

# 提取数字编码和民族名称
code <- as.integer(sub("^(\\d+) = .*", "\\1", valid_lines))
ethnic_group <- sub(".*'([^']+)'.*", "\\1", valid_lines)

# 构建DataFrame
result_df <- data.frame(Code = code, Ethnic = ethnic_group)
print(result_df)

运行后输出:

Code          Ethnic
1    1 White - British
2    2 White - Irish
3    9 White - Other

方法二:Tidyverse 简洁实现

如果习惯使用tidyverse工具链,可以用更流畅的管道操作完成:

library(tidyverse)

text <- "
VALUE Ethnic
1 = 'White - British'
2 = 'White - Irish'
9 = 'White - Other'
;
"

result_df <- text %>%
  str_split("\n") %>%
  pluck(1) %>%
  # 过滤空行、标题行和结尾分号行
  discard(~ .x == "" | str_detect(.x, "VALUE|;")) %>%
  # 提取数字和引号内的字符串
  str_extract_all("(\\d+)|'([^']+)'", simplify = TRUE) %>%
  as_tibble(.name_repair = ~ c("Code", "Ethnic")) %>%
  # 转换数据类型并清理引号
  mutate(Code = as.integer(Code),
         Ethnic = str_remove_all(Ethnic, "'"))

print(result_df)

核心逻辑说明

  1. 文本拆分与过滤:先把长文本拆分成单行,剔除空行、标题行(VALUE Ethnic)和结尾的分号行,只保留有效数据行。
  2. 正则提取:通过正则表达式分别提取每行的数字编码,以及单引号包裹的民族名称字符串。
  3. 数据框构建:将提取的两列数据组合成DataFrame,完成类型转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:40:45