我有一个带有尺寸字符串的列,格式如下:
41 1/4 x 29 3/8“(104.8 x 74.6 cm)
7'1“x 31”(216 x 78.8 cm)
6'6 3/4“x 6'6 3/4”(200 x 200 cm)
如何将cm的高度和宽度提取到单独的列中?
我想使用stringr
和dplyr
。
答案 0 :(得分:4)
我们可以尝试
library(stringr)
do.call(rbind,
lapply(str_extract_all(df1$Col1,
"(?<=\\()[0-9.]+|[0-9.]+(?=\\scm)"), as.numeric))
# [,1] [,2]
#[1,] 104.8 74.6
#[2,] 216.0 78.8
#[3,] 200.0 200.0
如果我们需要使用dplyr
library(dplyr)
library(purrr)
str_extract_all(df1$Col1, "(?<=\\()[0-9.]+|[0-9.]+(?=\\scm)") %>%
map(~as.numeric(.)) %>%
do.call(rbind,.)
# [,1] [,2]
#[1,] 104.8 74.6
#[2,] 216.0 78.8
#[3,] 200.0 200.0
或extract
tidyr
library(tidyr)
extract(df1, Col1, into=c("Col1", "Col2"),
"^[^(]+\\(([0-9.]+)\\D+([0-9.]+).*")
# Col1 Col2
#1 104.8 74.6
#2 216 78.8
#3 200 200