Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex R:将文本持续时间(“d..h..m..s”)转换为秒_Regex_R_Duration - Fatal编程技术网

Regex R:将文本持续时间(“d..h..m..s”)转换为秒

Regex R:将文本持续时间(“d..h..m..s”)转换为秒,regex,r,duration,Regex,R,Duration,正在尝试将以下持续时间转换为秒 x <- "1005d 16h 09m 57s" x1 <- "16h 09m 57s" x2 <- "06h 09m 57s" x3 <- "09m 57s" x4 <- "57s" x我们可以使用gsub将空格字符(\\s++)更改为++,然后我们可以将“d”、“h”、“m”、“s”替换为gsubfn,并循环输出并计算字符串 library(gsubfn) v2 <- gsubfn("[a-z]", list(d="*24

正在尝试将以下持续时间转换为秒

x <- "1005d 16h 09m 57s"
x1 <- "16h 09m 57s"
x2 <- "06h 09m 57s"
x3 <- "09m 57s"
x4 <- "57s"

x我们可以使用
gsub
将空格字符(
\\s++
)更改为
++
,然后我们可以将“d”、“h”、“m”、“s”替换为
gsubfn
,并循环输出并计算字符串

library(gsubfn)
v2 <- gsubfn("[a-z]", list(d="*24*60*60", h = "*60*60", m = "*60",
        s="*1"), gsub("\\s+", "+", v1))
unname(sapply(v2, function(x) eval(parse(text=x))))
#[1] 86890197    58197    22197      597       57
库(gsubfn)

v2我们可以使用
gsub
+
更改空格字符(
\\s++
),然后我们可以用
gsubfn
替换“d”、“h”、“m”、“s”,并循环输出并计算字符串

library(gsubfn)
v2 <- gsubfn("[a-z]", list(d="*24*60*60", h = "*60*60", m = "*60",
        s="*1"), gsub("\\s+", "+", v1))
unname(sapply(v2, function(x) eval(parse(text=x))))
#[1] 86890197    58197    22197      597       57
库(gsubfn)
v2使用:

因此,只要表达式的输出是
na
,它就会变成
0

例如:

使用:

因此,只要表达式的输出是
na
,它就会变成
0

例如:


@阿克伦,哇,我喜欢这个。我会花些时间试着了解第二部分。hahathat是解决一个常见而丑陋问题的绝妙方法。@akrun,我用这种方法给自己带来了另一个麻烦。我使用的是数据帧df,然后是df$v3@woshishui,这一定是因为有多个元素作为
列表
输出。你能展示一个小数据来说明问题吗?“v2”的输出是什么?@akrun。该列表是由持续时间中的空白条目引起的(改变x4@akrun,哇,我喜欢这个。我会花一些时间试着了解一下第二部分。hahathat是解决一个常见而丑陋问题的绝妙方法。@akrun,我用这种方法让自己陷入了另一个麻烦。我使用的是数据帧df,然后是df$v3@woshishui,这一定是因为有多个元素导致
 列表
output。能否显示一个小数据来说明问题?v2的输出是什么?@akrun。该列表是由持续时间中的空白项(更改x4)引起的
 v1 <- c(x, x1, x2, x3, x4)
ifelse(is.na(your_exp),0)
days <- ifelse(is.na(as.numeric(gsub('^*([0-9]+)d.*$','\\1',x1))),0)
hours <- ifelse(is.na(as.numeric(gsub('^.*([0-9][0-9])h.*$','\\1',x1))),0)
minutes <- ifelse(is.na(as.numeric(gsub('^.*([0-9][0-9])m.*$','\\1',x1))),0)
seconds <- ifelse(is.na(as.numeric(gsub('^.*([0-9][0-9])s.*$','\\1',x1))),0)
> duration_seconds
[1] 58197