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