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
相关产品推荐
相关产品推荐

