在单元格内分离数据并复制行数据

问题描述 投票:0回答:2

我有一个单元格内的数据,用空格分隔。例如,有一个城市名称的列,例如“ New York,NY”,然后是另一列,邮政编码为“ 12345 67891 23456”。有什么好的方法可以将这一行分隔成三行,每行都具有“ New York,NY”,然后关联一个邮政编码?]

r
2个回答
2
投票

尝试一下:

library(dplyr)
library(tidyr)
tibble(city = "New York, NY", zipcodes = "12345 67891 23456") %>%
  mutate(zipcodes = strsplit(zipcodes, "\\s+")) %>%
  unnest(zipcodes)
# # A tibble: 3 x 2
#   city         zipcodes
#   <chr>        <chr>   
# 1 New York, NY 12345   
# 2 New York, NY 67891   
# 3 New York, NY 23456   

Base R:

dat <- data.frame(city = "New York, NY", zipcodes = "12345 67891 23456", stringsAsFactors = FALSE)
zips <- strsplit(dat$zipcodes, "\\s+")
data.frame(city=rep(dat$city, each = lengths(zips)), zipcode = unlist(zips))
#           city zipcode
# 1 New York, NY   12345
# 2 New York, NY   67891
# 3 New York, NY   23456

1
投票

如果使用base R,是指这种输出吗?

s <- "New York, NY 12345 67891 23456"
data.frame(addr = paste0(gsub("(.*?\\s)\\d.*","\\1",s), unlist(regmatches(s,gregexpr("\\d+",s)))))

屈服

                addr
1 New York, NY 12345
2 New York, NY 67891
3 New York, NY 23456
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.