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

如何基于House列拆分R语言data.frame并新增序号列?

处理R语言data.frame中House列的多值拆分需求

可以用两种方式实现你的需求,分别是基于tidyverse工具包的简洁写法,以及无需额外包的base R写法:

方法一:使用tidyverse(推荐)

tidyverse里的separate_rows函数可以直接拆分多值列,搭配分组操作生成对应的head标签:

# 安装并加载tidyverse(首次使用需安装)
# install.packages("tidyverse")
library(tidyverse)

# 你的原始数据
df <-  data.frame(Region = c("AU","USA","CA","UK","GE","AU","USA","CA","UK"),
                  lock = c(1,1,NA,1,NA,1,NA,1,NA),
                  type= c("sale",NA,NA,"target","target",NA,"sale",NA,"target"),
                  House =c("Tagore house","Gandhi house",NA,"Flexible;Tagore house;Gandhi house","Tagore house",NA,"Flexible;Gandhi house","Gandhi house","Gandhi house"))

# 核心处理代码
df_processed <- df %>%
  mutate(row_id = row_number()) %>%  # 给原数据每行加唯一标识,用于后续分组
  separate_rows(House, sep = ";") %>%  # 按;拆分House列,拆分后每行对应一个值
  group_by(row_id) %>%  # 按原行分组,确保同一原行拆分出的行属于一组
  mutate(head_label = paste0("head", row_number())) %>%  # 生成head1、head2...的标签
  ungroup() %>%  # 取消分组
  select(-row_id)  # 移除临时的行号列(不需要可删除此行)

# 查看处理后的结果
print(df_processed)

方法二:使用base R(无需额外包)

如果你不想加载第三方包,用base R的字符串拆分和行扩展也能实现:

# 你的原始数据
df <-  data.frame(Region = c("AU","USA","CA","UK","GE","AU","USA","CA","UK"),
                  lock = c(1,1,NA,1,NA,1,NA,1,NA),
                  type= c("sale",NA,NA,"target","target",NA,"sale",NA,"target"),
                  House =c("Tagore house","Gandhi house",NA,"Flexible;Tagore house;Gandhi house","Tagore house",NA,"Flexible;Gandhi house","Gandhi house","Gandhi house"))

# 拆分House列得到每个元素的列表
split_house <- strsplit(df$House, ";")

# 扩展原数据的行,对应拆分后的元素数量
expanded_df <- df[rep(seq_len(nrow(df)), sapply(split_house, length)), ]

# 替换House列为拆分后的单个值
expanded_df$House <- unlist(split_house)

# 生成head标签列
expanded_df$head_label <- unlist(lapply(split_house, function(x) paste0("head", seq_along(x))))

# 查看结果
print(expanded_df)

两种方法都会保留原数据中的NA行,拆分后的行自动继承原行的其他列值,同时新增head_label列标注序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:48:35