如何使用stringr从R中的维度字符串中提取高度和宽度?

时间:2016-03-02 19:10:07

标签: r dplyr stringr

我有一个带有尺寸字符串的列,格式如下:

  

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的高度和宽度提取到单独的列中? 我想使用stringrdplyr

1 个答案:

答案 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