मेरा कोड एक .txt फ़ाइल में पढ़ता है जिसमें एक कॉलम में समय टिकटों की एक श्रृंखला होती है। मुझे कॉलम के लिए दिन के उजाले की बचत के लिए खाते की आवश्यकता थी, इसलिए मैंने इन समय टिकटों से एक घंटा घटाने के लिए लुब्रिडेट पैकेज का उपयोग किया। मैं अवधि वर्ग को लुब्रिडेट से %I:%M%:S %p के समय प्रारूप में परिवर्तित करने के लिए संघर्ष कर रहा हूं।

यहाँ मेरा कोड है।

  # Changing from 24 Hr to 12 Hr Format #
  raw_data_sample$Time <- format(strptime(raw_data_sample$Time, format='%H:%M:%S'), '%I:%M:%S %p')
  
  # Subtracting an Hour for Daylight Savings
  raw_data_sample$Time <- hms(raw_data_sample$Time)
  raw_data_sample$Time <- raw_data_sample$Time - hours(1)

यहाँ मेरा वर्तमान आउटपुट है।

c("1H 41M 54S", "1H 42M 4S", "1H 42M 14S", "1H 42M 31S", "1H 42M 41S", "1H 43M 1S")

मैं जैसे आउटपुट प्राप्त करने की उम्मीद कर रहा हूं

1:41:54 PM, 1:42:40 PM

कोई सलाह? शुक्रिया!

1
user14880462 29 पद 2020, 02:28

2 जवाब

सबसे बढ़िया उत्तर

यदि हमें एक घंटा घटाना है, तो इसे मूल डेटाटाइम ऑब्जेक्ट पर करें, और फिर formatटिंग करें

library(lubridate)
# // convert to Datetime class 
raw_data_sample$Time <- as.POSIXct(raw_data_sample$Time, format = "%H:%M:%S")
 # // subtract 1 hour from the Datetime and use format to change the format
format(raw_data_sample$Time %m-% hours(1), "%I:%M:%S %p")
0
akrun 29 पद 2020, 19:28

आप अपनी अवधि वस्तु को POSIXct में बदलने के लिए parse_date_time फ़ंक्शन का उपयोग कर सकते हैं और फिर अपने उपयुक्त प्रारूप में प्राप्त करने के लिए format का उपयोग कर सकते हैं।

library(lubridate)
raw_data_sample$Time1 <- format(parse_date_time(raw_data_sample$Time, 'HMS'), '%I:%M:%S %p')

उदाहरण के लिए,

x <- period(c("1H 41M 54S", "1H 42M 4S", "1H 42M 14S", "1H 42M 31S", "1H 42M 41S", "1H 43M 1S"))
format(parse_date_time(x, 'HMS'), '%I:%M:%S %p')
#[1] "01:41:54 AM" "01:42:04 AM" "01:42:14 AM" "01:42:31 AM" "01:42:41 AM" "01:43:01 AM"
0
Ronak Shah 29 पद 2020, 06:32