假设我在tbl中有一个“选项代码”列,数据是这样的:

m1803-C-2550
m1807-P-3050

我想在新变量“期权类型”“-”和第二个“-”之后的2550/3050之间抓取C / P作为新变量“行使价”。

如何使用tidyverse进行编码?

现在,我可以通过解决第一个问题
tbl %>% mutate(option_type = str_sub(option_code, str_locate(option_code, "[CP]"))

但是我无法解决我的第二个问题,否则你们可能有一种优雅的方式来解决我的第一个问题。

最佳答案

试试这个:

library(dplyr)
library(stringr)

  df %>%
  mutate(option_type = str_extract(option_code, "(?<=-)[CP]"),
         strike_price = as.numeric(str_extract(option_code, "(?<=-)\\d+")))

#>    option_code option_type strike_price
#> 1 m1803-C-2550           C         2550
#> 2 m1807-P-3050           P         3050
数据
df <- data.frame(option_code =  c("m1803-C-2550", "m1807-P-3050"))
reprex package(v0.3.0)创建于2020-05-23

关于r - 如何在“-”之后抓取某些字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61971567/

10-12 13:59