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

R语言:如何拆分多观测列并匹配对应列的观测值?

解决方案

你可以借助tidyverse工具包实现需求,关键是要保证两列拆分时对应关系不丢失,以下是两种可行方法:

方法1:使用separate_rows()(推荐)

separate_rows()支持同时拆分多列,只需指定匹配逗号(含可选空格)的分隔符,就能兼容你数据里两种分隔格式(纯逗号/逗号加空格):

library(tidyverse)

# 原始数据
dat <- data.frame(id = c("1,2", "2,3", "3, 4, 5, 6"), 
                  location = c("N,S", "S,N", "N,N,N,S")
                  )

# 同步拆分两列,保持对应关系
result <- dat %>%
  separate_rows(id, location, sep = ",\\s?") %>%
  mutate(id = as.integer(id)) # 可选:将id转为整数类型

print(result)

方法2:使用str_split() + unnest()

先把每列拆分为列表格式,再展开列表,同样能保证对应关系:

result <- dat %>%
  mutate(
    id = str_split(id, ",\\s?"),
    location = str_split(location, ",\\s?")
  ) %>%
  unnest(c(id, location)) %>%
  mutate(id = as.integer(id))

运行后输出结果:

id location
1  1        N
2  2        S
3  2        S
4  3        N
5  3        N
6  4        N
7  5        N
8  6        S

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:53:24