如何在R中按指定关键词拆分字符向量并转换为目标数据框
实现方案
核心思路是用预定义的关键词作为匹配锚点,通过正则提取各段对应内容,再按要求生成结构化数据框,代码可直接适配你爬取得到的EN.char向量。
可直接运行的代码
# 加载依赖包 library(stringr) library(dplyr) # 预定义拆分关键词 split.vector <- c("Teacher", "Tutor", "Speaks", "English", "Japanese", "French", "Rate", "Video") # 处理字符向量,如需处理爬取结果,将下方char.vector替换为你的EN.char即可 df_result <- lapply(char.vector, function(s) { # 提取角色信息 role <- str_extract(s, "Teacher|Tutor") # 提取姓名(角色之前的所有内容) name <- str_remove(s, paste0(role, ".*")) # 提取语言段(Speaks之后、Rate之前的内容) lang_section <- str_extract(s, "(?<=Speaks).*?(?=Rate)") # 标记是否掌握对应语言 en <- as.integer(str_detect(lang_section, "English")) jp <- as.integer(str_detect(lang_section, "Japanese")) fr <- as.integer(str_detect(lang_section, "French")) # 提取美元费率 rate <- as.integer(str_extract(s, "(?<=USD )\\d+(?=Video)")) # 生成单行数据 tibble( Name = name, Role = role, English = en, Japanese = jp, French = fr, Rate_USD = rate ) }) %>% bind_rows() # 输出结果 df_result
运行效果
执行上述代码后得到的df_result完全匹配你要求的输出:
| Name | Role | English | Japanese | French | Rate_USD |
|---|---|---|---|---|---|
| John Doe | Teacher | 1 | 1 | 0 | 10 |
| Jane | Tutor | 0 | 1 | 1 | 15 |
如果后续爬取的文本规则有微调,只需要调整对应正则的匹配规则即可适配。
内容的提问来源于stack exchange,提问作者Bart Yarborough
相关产品推荐
相关产品推荐

