将字符转换为月数

时间:2019-04-13 16:40:59

标签: r

我正在处理一个数据集,其中有一列account_age。在此列中,以字符格式“ 1YRS 5MON”格式提及年龄。 如何转换成月?请指导。

1 个答案:

答案 0 :(得分:0)

我们可以将'YRS','MON'与gsubfn进行匹配,用数字和eval uate替换字符

library(gsubfn)
unname(sapply(gsubfn("[A-Z]+", list(YRS = "*12 +", MON = "*1"),
           df1$col1), function(x) eval(parse(text = x))))
#[1] 17

或者另一个选择是提取数字并求和或积

library(tidyverse)
map_dbl(str_extract_all(df1$col1, "\\d+"), ~ as.numeric(.x) %*% c(12, 1))
#[1] 17

或者我们可以删除字母,然后使用data.frame进行读取并获得乘积之和

as.matrix(read.table(text = gsub("[A-Z]+", "", df1$col1),
       header = FALSE) )%*% c(12, 1)

数据

df1 <- data.frame(col1 = "1YRS 5MON", stringsAsFactors = FALSE)