Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
736 views
in Technique[技术] by (71.8m points)

r - Convert an integer column to time HH:MM

I'm trying to learn R, and I'm stuck with a problem regarding the conversion of one column in a data set from integer values to time.

The aforementioned column breaks the days in 5 minute portions. Using the following format: 5 would be 00:05, 105 would be 01:05 and 1105 would be 11:05.

if I use:

strptime(activity[,"interval"],format="%H%M")

The resulting object returns "NA" for all the values that are below 1000.

Any ideas on how to make that same process using apply family would be greatly appreciated

I know this is a pretty basic question but I am not able to figure it out myself.

Thank you very much

Edit: As requested the activity[n,"interval"] column (This column has 17568 rows, comprising numbers from 5 to 2355 for several days) and the 15 first elements look like this:

activity[1:15,"interval"]
[1]   0   5  10  15  20  25  30  35  40  45  50  55 100 105 110

And should look like this

activity[1:15,"interval"]
[1]   0000   0005  0010  0015  0020  0025  0030  0035  0040  0045  
[11]  0050   0055  0100  0105  0110
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Slightly modified version of @David Arenburg's code that uses sprintf (see this blog post for differences in paste and sprint: http://trinkerrstuff.wordpress.com/2013/09/15/paste-paste0-and-sprintf-2/)"

temp <- c(0 ,  5 , 10,  15  ,20 , 25  ,30  ,35,  40,  45 , 50  ,55 ,100 ,105, 110) # Your data

temp <- sprintf("%04d", temp)

##  [1] "0000" "0005" "0010" "0015" "0020" "0025" "0030" "0035"
##  [9] "0040" "0045" "0050" "0055" "0100" "0105" "0110"

format(strptime(temp, format="%H%M"), format = "%H:%M")

##  [1] "00:00" "00:05" "00:10" "00:15" "00:20" "00:25" "00:30" "00:35"
##  [9] "00:40" "00:45" "00:50" "00:55" "01:00" "01:05" "01:10"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...