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

在R中拆分多值字段并重复关联字段完成数据重组

R 实现多值行拆分对齐方案

方法1:tidyverse 套件实现(代码更简洁)

适合已经安装tidyverse的场景,自动保证顺序匹配:

library(tidyverse)

# 你已提取的三个列表示例,替换为你自己的变量即可
house_type <- c("House", "Flat", "Mobile Home", "Camper-Van")
name_col <- c("Name1", "Name2;Name3", "Name4", "Name5;Name6;Name7;Name8")
email_col <- c("Email1@xyz.com", "Email2@xyz.com;Email3@xyz.com", "Email4@xyz.com", "Email5@xyz.com;Email6@xyz.com;Email7@xyz.com;Email8@xyz.com")

# 组装为原始数据框
raw_df <- tibble(house_type, name = name_col, email = email_col)

# 按分号拆分多值列,自动扩展行、重复住房类型
result_df <- raw_df %>%
  separate_longer_delim(c(name, email), delim = ";")

方法2:基础R实现(无需安装额外包)

# 你已提取的三个列表示例,替换为你自己的变量即可
house_type <- c("House", "Flat", "Mobile Home", "Camper-Van")
name_col <- c("Name1", "Name2;Name3", "Name4", "Name5;Name6;Name7;Name8")
email_col <- c("Email1@xyz.com", "Email2@xyz.com;Email3@xyz.com", "Email4@xyz.com", "Email5@xyz.com;Email6@xyz.com;Email7@xyz.com;Email8@xyz.com")

# 计算每行需要重复的次数
row_rep_times <- lengths(strsplit(name_col, ";"))

# 重复住房类型向量到匹配长度
rep_house <- rep(house_type, times = row_rep_times)

# 拆分姓名、邮箱为长向量
split_names <- unlist(strsplit(name_col, ";"))
split_emails <- unlist(strsplit(email_col, ";"))

# 合并为最终数据框
result_df <- data.frame(
  house_type = rep_house,
  name = split_names,
  email = split_emails
)

补充说明

  • 两种方法均严格保留原行内姓名和邮箱的分号分隔顺序,不会出现匹配错乱
  • 如需导出为目标格式csv,可执行代码:write.csv(result_df, "输出文件路径.csv", row.names = FALSE, quote = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:08