我正在处理一个数据集,其中有一列account_age。在此列中,以字符格式“ 1YRS 5MON”格式提及年龄。 如何转换成月?请指导。
答案 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)