gpt4 book ai didi

r - 从字符串中提取年和月的持续时间并转换为月

转载 作者:行者123 更新时间:2023-12-03 23:44:41 25 4
gpt4 key购买 nike

我有一个带有句点长度的字符串列,格式为 "xx years yy months" .我只想以月表示这些时期,即 12 * 年数 + 月数。
一个小例子:

x = c("2 years 5 months", "10 years 10 months")
这里想要的结果是 2 * 12 + 5 = 29,和 10 * 12 + 10 = 130 分别。

我试过 substr函数,但我没有设法处理月份和年份可能是一位或两位数的事实。
12 * as.numeric(substr(x, 1, 2)) + as.numeric(substr(x, 6, 7)))
然后我尝试了 sprintf如下,但它没有给出预期的结果。
sprintf("%1.0f", x))

最佳答案

使用正则表达式提取年数和月数可以这样实现:

tomonths <- function(x) {
sum(as.numeric(regmatches(x, gregexpr("\\d+", x))[[1]]) * c(12, 1))
}
tomonths("10 years 10 months")
#> [1] 130
对于您可以使用的向量,例如 sapply(c("2 years 5 months", "10 years 10 months"), tomonths) .
编辑 :按照@thelatemail 的评论(谢谢!),一种矢量化且更有效的方法如下所示:
tomonths2 <- function(x) {
sapply(regmatches(x, gregexpr("\\d+", x)), function(x) sum(as.numeric(x) * c(12,1)) )
}

关于r - 从字符串中提取年和月的持续时间并转换为月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63586317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com