将字符转换为月数

问题描述 投票:1回答:1

我正在处理一个数据集,其中有一个column-account_age。在本专栏中,年龄以字母形式的“1YRS 5MON”格式提及。如何将相同的转换为月?请指导。

r
1个回答
0
投票

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

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)

data

df1 <- data.frame(col1 = "1YRS 5MON", stringsAsFactors = FALSE)
相关问题
热门问答
最新问题