替换因子变量中的字母并消除空格

时间:2018-03-06 20:24:09

标签: r

我对R很新,我试图清理我的数据进行处理。我有一个列(因子变量),其中包含以下格式的时间信息: 1H 35MIN 37SEG

在我将其转换为时间之前,我想转换上述格式的所有观察结果,我需要消除字母和空格,这样我就可以完成所有这些观察: 1:35:37

知道我该怎么做吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用gsub和正则表达式执行此操作。我添加了as.character来将您的因素转换为字符串。

Times = c('1H 35MIN 37SEC',  '1H 35MIN 37SEC', '2H 40MIN 19SEC')
gsub("\\D+", ":", gsub("\\D+$", "", as.character(Times)))
[1] "1:35:37" "1:35:37" "2:40:19"

第一个替换删除尾随的非数字字符。然后第二次替换将任何剩余的非数字字符更改为冒号。

答案 1 :(得分:0)

这真的取决于你以后要用它做什么,但是如果你想能够像计算一段时间那样对待它,那么rubridate包将为你完成所有这些用hms

install.packages("lubridate")
library(lubridate)
lubri_time <- hms("1H 35MIN 37SEG")
# to convince yourself that this is actually an object that can be used in time calculations:
unclass(lubri_time)
# [1] 37
# attr(,"year")
# [1] 0
# attr(,"month")
# [1] 0
# attr(,"day")
# [1] 0
# attr(,"hour")
# [1] 1
# attr(,"minute")
# [1] 35

第一个值(37)是秒数。如果"1H 35MIN 37SEC"是您问题中的拼写错误,它与SEG的工作方式相同