1

次のような値を持つことができるデータフレームがあります。

p<-c("2012-08-14 9:00", "2012-08-14 7:00:00")

私はこれとして日時に変換しようとしています:

p<-as.POSIXct(p)

this converted everyting to to 2012-08-14 09:00:00

何らかの理由で、それはもう機能していません。お気づきの方もいらっしゃると思いますが、私のデータには秒がある場合とない場合があります。これを日時形式にするにはどうすればよいですか?

次のようなエラーが発生します:

Error in as.POSIXlt.character(p) : 
  character string is not in a standard unambiguous format
4

2 に答える 2

4

ベクトルは一貫した形式ではないため、複数の形式をチェックするPOSIXltため、最初に変換してください。as.POSIXlt.character

p <- c("2012-08-14 9:00", "2012-08-14 7:00:00")
plt <- as.POSIXlt(p)
pct <- as.POSIXct(plt)
于 2012-08-17T18:25:25.153 に答える
0

パッケージlubridateは
ここで例を助けるかもしれません-おそらく最もエレガントなものではありません-しかしそれはhsです

p<-c("2012-08-14 9:00", "2012-08-14 7:00:00")

require(lubridate) # 


NewDate <- c()
for (i in 1 : 2)
        {
          if (nchar(unlist(strsplit(p[i], ' '))[2]) == 4) {NewDate <- c(NewDate,       as.character(ymd_hm(p[i])))}
          if (nchar(unlist(strsplit(p[i], ' '))[2]) == 7) {NewDate <- c(NewDate, as.character(ymd_hms(p[i])))}
        }
NewDate
于 2012-08-17T20:03:31.430 に答える