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

使用tidyr拆分字符串为行后,如何添加各部分原始顺序列?

解决方法

你可以在使用tidyr::separate_longer_delim拆分完成后,通过分组生成组内行号的方式添加记录原始顺序的order列,具体实现如下:

首先准备示例数据:

library(tidyr)
library(dplyr)

df <- tibble(V1 = c(1, 2), V2 = c("h,e", "l,l,o"))

然后执行拆分并添加顺序列:

df %>%
  separate_longer_delim(V2, delim = ",") %>%
  group_by(V1) %>%
  mutate(order = row_number()) %>%
  ungroup()

执行后就能得到目标结果:

V1V2order
1h1
1e2
2l1
2l2
2o3

原理很直接:separate_longer_delim会严格按照原始字符串中元素的顺序拆分,所以在每个V1分组内,row_number()生成的序号正好对应拆分前元素的原始位置。

如果你偏好先拆分宽格式再转长的方式,也可以用下面的代码:

df %>%
  separate_wider_delim(V2, delim = ",", names_sep = "_") %>%
  pivot_longer(cols = starts_with("V2_"), names_to = "order", values_to = "V2", names_prefix = "V2_") %>%
  mutate(order = as.integer(order)) %>%
  arrange(V1, order)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:07:33