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

R语言数据框基于多月份提取结果拆分重复行的实现方法

你用str_extract_all得到的city_months是列表格式的列,只需追加一步unnest()函数即可将列表内的每个元素拆分为单独行,原有其他列内容会自动重复保留。

另外注意你现有正则的规则存在缺陷:正向前瞻(?=\\sin)仅对july生效,april和may不会校验后续是否跟有in,会提取到文本中所有出现的对应月份,不符合你「仅提取城市前的月份」的需求,需要把三个月份放在分组内,让前瞻规则对所有月份生效。

完整可运行代码如下:

library(tidyverse)

# 构造原始数据
details <- "I stay in april in Barcelona, after in may in Paris and finally in july in London. april is a cool month. july has very hot temperatures"
df <- as.data.frame(details)

# 提取并拆分为多行
dfmonths <- df %>%
  mutate(city_months = str_extract_all(details, "(april|may|july)(?=\\sin)")) %>%
  unnest(city_months)

运行后输出结果和你需要的效果完全一致:

# A tibble: 3 × 2
  details                                                                                                 city_months
  <chr>                                                                                                   <chr>      
1 I stay in april in Barcelona, after in may in Paris and finally in july in London. april is a cool mo… april      
2 I stay in april in Barcelona, after in may in Paris and finally in july in London. april is a cool mo… may        
3 I stay in april in Barcelona, after in may in Paris and finally in july in London. april is a cool mo… july       

如果使用的是旧版本tidyr,调整unnest的参数写法即可:unnest(cols = city_months)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:15:03