2012-03-25 18 views
7

毎時の天気データがあります。私はここから関数の例を見てきました:http://casoilresource.lawr.ucdavis.edu/drupal/node/99112時間から24時間に変換する

URLデータ型が異なる空港データを記述するようにコードを変更しています。空港気象データのもう1つの問題は、時刻データが12時間形式で保存されていることです。ここでは、データのサンプルです:

14 10:43 AM 
15 10:54 AM 
16 11:54 AM 
17 12:07 PM 
18 12:15 PM 
19 12:54 PM 
20 1:54 PM 
21 2:54 PM 

は、ここに私が試みたものです。(私は彼らがこの通過した場合に12と午後1時間のいずれかの時間がオフになりますので、単に「PM」を使用することは十分気をつけていないことを確認alg)

date<-Sys.Date() 


data$TimeEST<-strsplit(data$TimeEST, ' ') 
for (x in 1:35){ 
    if('AM' %in% data$TimeEST[[x]]){ 
     gsub('AM','',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_c(date,' ',data$TimeEST[x],':',data$TimeEST[2]) 
    } 
    else if('PM' %in% data$TimeEST[[x]]){ 
     data$TimeEST[[x]]<-gsub('PM', '',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-strsplit(data$TimeEST[[x]], ':') 
     data$TimeEST[[x]][[1]][1]<-as.integer(data$TimeEST[[x]][[1]][1])+12 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]][[1]]) 
     data$TimeEST[[x]]<-str_c(date, " ", data$TimeEST[[x]][1],':',data$TimeEST[[x]][2]) 

    } 
} 

ヘルプがありますか?

答えて

15

strptimeは動作しますか?

df2= structure(c("10:43 AM", "10:54 AM", "11:54 AM", "12:07 PM", "12:15 PM", 
      "12:54 PM", "1:54 PM", "2:54 PM"), .Dim = c(8L, 1L)) 



strptime(df2, "%I:%M %p") 

それとも、日付をしたくない場合は、のようなもの: それはあなたがオブジェクトに対してたいクラスの種類によって異なりますが。

substr(strptime(df2, "%I:%M %p"),11,19) 
+0

日付の問題は実際にはかなり大きいです。私は、日付/時刻情報を動物園オブジェクトに入れることができるオブジェクトにしたいが、その機能の主な目的は特定の日のデータを返すことである。私がその日付の情報を失った場合、それは当初のコラムには含まれていませんが、将来の頭痛を引き起こします。日付情報は、ユーザが日付範囲を初期関数に入力するときにユーザによって提供される。その範囲内の各日について、ウェブサイトが読み取られ、データが消去されます。クリーニングの一部は12時間から24時間に変換されています。ありがとうございました –

+0

'時刻を正しくエンコードされた日付時刻に変換する
' '$ $ TimeEST < - strptime(data $ TimeEST、format = '%I:%M%p') '
' data $ TimeEST < - substr data $ TimeEST < - str_c(date、data $ TimeEST) ' ' $ $ TimeEST < - as.POSIXlt(data $ TimeEST、format = '%Y-%m- %d%H:%M:%S ') '@AndresTこれは私が望むオブジェクトタイプを得るために使った提案です。 –

+0

または 'format(strptime(df2、"%I:%M%p ")、"%T ")' –

3

?strptimeをご覧ください。

as.POSIXct(data$TimeEST, format='%I:%M %p')