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

在R语言中拆分多行数据:将向量与对应文本拆分为单行

拆分DataFrame中对应字符串与向量元素为单独行

你有一个包含4列的DataFrame:

  • features.properties.messageType:每行单一字符值
  • features.properties.areaDesc:分号分隔的字符串,每个条目对应后续两列的一个元素
  • features.properties.geocode.SAME:逗号分隔的字符串,每个值与areaDesc条目一一对应
  • features.properties.geocode.UGC:逗号分隔的字符串,每个值与前两列的条目一一对应

目标是将每行中的对应条目拆分为单独行,比如第一行的Jefferson, MO对应029099和MOC099,最终每个组占一行。


解决方案

使用tidyverse工具链(dplyr + tidyr)可以高效完成这个任务,步骤如下:

  1. 加载必要的包(若未加载):
library(dplyr)
library(tidyr)
  1. 拆分列并展开为多行:
# 拆分各列为列表格式,再同步展开为单独行
expanded_alerts <- active_alerts %>%
  # 拆分areaDesc列,分隔符为分号+空格
  mutate(area = str_split(features.properties.areaDesc, "; ")) %>%
  # 拆分geocode.SAME列,分隔符为逗号+空格
  mutate(same_code = str_split(features.properties.geocode.SAME, ", ")) %>%
  # 拆分geocode.UGC列,分隔符为逗号+空格
  mutate(ugc_code = str_split(features.properties.geocode.UGC, ", ")) %>%
  # 同步展开三个列表列,确保对应关系不混乱
  unnest(c(area, same_code, ugc_code)) %>%
  # 重命名列并保留需要的字段(可选,让列名更简洁)
  select(
    message_type = features.properties.messageType,
    area,
    same_code,
    ugc_code
  )
  1. 查看处理后的结果:
head(expanded_alerts)

示例输出(对应原数据第一行):

message_type        area same_code ugc_code
1       Update   Howell, MO    029091   MOC091
2       Update   Oregon, MO    029149   MOC149
3       Update    Ozark, MO    029153   MOC153
4       Update  Shannon, MO    029203   MOC203

注意事项

  • 确保拆分的分隔符与数据实际格式一致:areaDesc用"; "(分号加空格),geocode.SAME和geocode.UGC用", "(逗号加空格),若数据格式不同需对应调整。
  • unnest函数会自动保证三个列表列的元素一一对应展开,不会打乱匹配关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:56:59