【问题标题】:split packaging strings using R使用 R 拆分包装字符串
【发布时间】:2019-07-29 20:09:31
【问题描述】:

我正在处理一些包装字符串,需要计算它们到“每个”的转换。

它们看起来像这样:

     packing                          uom   
[1,] "100EA/BX 1000EA/CA"             "BX"
[2,] "100EA/CA"                       "CA"
[3,] "10EA/BX 4BX/CA"                 "EA" 
[4,] "1EA/EA"                         "BX" 
[5,] "1EA/EA 12EA/BG 12EA/DZ 94EA/CA" "BG" 

小段的数量从 1 到 4 不等。我尝试拆分单元格以提取数字和度量单位,然后编写了一个非常长的脚本,其中包含大量条件语句来进行计算。我想知道是否有更简单的方法来完成这项任务。以下是所需的输出。谢谢!

     packing                          uom  conv 
[1,] "100EA/BX 1000EA/CA"             "BX" "100"
[2,] "100EA/CA"                       "CA" "100"
[3,] "10EA/BX 4BX/CA"                 "EA" "1"  
[4,] "1EA/EA"                         "BX" "1"  
[5,] "1EA/EA 12EA/BG 12EA/DZ 94EA/CA" "BG" "12" 

【问题讨论】:

  • 请根据您的输入显示所需的输出。如果您的输入是有效的 R 语法并且是可复制/可粘贴的,那就太好了——即使这只是意味着在开头添加 x <- c( 并在整个过程中添加引号和逗号。
  • 谢谢@Gregor。我已经更新了帖子!

标签: r split


【解决方案1】:

使用 tidyverse。

data <- c("12EA/DZ 36EA/BX", "10EA/BX 36EA/CA", "1EA/EA 12EA/BX 12EA/DZ 36EA/BX")

str_split(data, " ") %>%
   unlist %>% enframe(name="index", value="packing") %>%
   separate(packing, sep="/", into=c("conv", "uom"), remove=FALSE) %>%
   mutate(conv=str_replace(conv, "EA", "")) %>%
   select(packing, uom, conv)

  packing uom   conv
  <chr>   <chr> <chr>
1 12EA/DZ DZ    12
2 36EA/BX BX    36
3 10EA/BX BX    10
4 36EA/CA CA    36
5 1EA/EA  EA    1
6 12EA/BX BX    12
7 12EA/DZ DZ    12
8 36EA/BX BX    36

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多