我对R很新,我试图清理我的数据进行处理。我有一个列(因子变量),其中包含以下格式的时间信息:
1H 35MIN 37SEG
在我将其转换为时间之前,我想转换上述格式的所有观察结果,我需要消除字母和空格,这样我就可以完成所有这些观察:
1:35:37
知道我该怎么做吗?
由于
答案 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
的工作方式相同