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
In Pandas, you can convert a column (string/object or integer type) to datetime using the to_datetime() and astype() methods. Furthermore, you can also specify the data type (e.g., datetime) when reading your data from an external source, such as CSV or Excel.
By using pandas to_datetime() & astype() functions you can convert column to DateTime format (from String and Object to DateTime).
Use the timedelta() constructor and pass the seconds value to it using the seconds argument. The timedelta constructor creates the timedelta object, representing time in days, hours, minutes, and seconds ( days, hh:mm:ss.ms ) format. For example, datetime.
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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With