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