【问题标题】:How to extract height and width from dimensions string in R using stringr?如何使用stringr从R中的尺寸字符串中提取高度和宽度?
【发布时间】:2016-06-15 19:50:53
【问题描述】:

我有一列包含以下格式的维度字符串:

41 1/4 x 29 3/8"(104.8 x 74.6 厘米)
7' 1" x 31" (216 x 78.8 cm)
6' 6 3/4" x 6' 6 3/4" (200 x 200 cm)

如何将高度和宽度(以厘米为单位)分别提取到单独的列中? 我想使用stringrdplyr

【问题讨论】:

    标签: r dplyr stringr


    【解决方案1】:

    我们可以试试

    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
    

    【讨论】:

    • 感谢您展示不同的方式。这很有帮助。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多