У меня есть фрейм данных df
со столбцом под названием datetime
, который суммирует дату и время. Этот столбец имеет формат POSIXct ("% Y:% m:% d% H:% M:% S). Я создал новую переменную с именем Date_time_hour
, в которой я хочу только часовое время (формат"% Y "). :% m:% d% H "). Я сомневаюсь, что когда я запускаю head(df$date_time_hour)
, я получаю дату, но не время в консоли. Почему это так? Я делаю что-то не так?
Любопытно, что в приведенном ниже примере я не получаю закомментированную проблему.
Пример:
df1<-data.frame(DateTime=c("2016-08-01 12:04:07","2016-08-01 12:06:07","2016-08-01 13:12:12","2016-08-01 14:04:07","2016-08-01 15:01:45","2016-08-01 15:34:07","2016-08-01 16:25:16","2016-08-01 16:29:16","2016-08-01 16:33:16","2016-08-01 16:54:16","2016-08-01 16:58:16","2016-08-01 17:13:16","2016-08-01 17:21:16","2016-08-01 17:23:42","2016-08-01 17:27:16","2016-08-01 17:28:16","2016-08-01 17:29:28","2016-08-01 17:42:08"),Var1=c( "V6", "V7", "V6", "V6", "V7", "V7", "V6", "V6", "V6", "V7", "V7", "V7", "V6", "V6", "V6", "V9", "V7", "V4" ),Var3=c(16 , 17, 19, 16, 17, 16, 17, 16, 16, 19, 17, 16, 16, 17, 17, 19, 16, 17))
df1$DateTime<- as.POSIXct(df1$DateTime, format= "%Y-%m-%d %H:%M:%S", tz= "UTC")
df1$Date_time_hour<- strptime(df1$DateTime, "%Y-%m-%d %H",tz= "UTC")
df1$Date_time_hour<- as.POSIXct(df1$Date_time_hour, format="%Y-%m-%d %H:%M:%S", tz="UTC")
df1
DateTime Var1 Var3 Date_time_hour
1 2016-08-01 12:04:07 V6 16 2016-08-01 12:00:00
2 2016-08-01 12:06:07 V7 17 2016-08-01 12:00:00
3 2016-08-01 13:12:12 V6 19 2016-08-01 13:00:00
4 2016-08-01 14:04:07 V6 16 2016-08-01 14:00:00
5 2016-08-01 15:01:45 V7 17 2016-08-01 15:00:00
6 2016-08-01 15:34:07 V7 16 2016-08-01 15:00:00
7 2016-08-01 16:25:16 V6 17 2016-08-01 16:00:00
8 2016-08-01 16:29:16 V6 16 2016-08-01 16:00:00
9 2016-08-01 16:33:16 V6 16 2016-08-01 16:00:00
10 2016-08-01 16:54:16 V7 19 2016-08-01 16:00:00
11 2016-08-01 16:58:16 V7 17 2016-08-01 16:00:00
12 2016-08-01 17:13:16 V7 16 2016-08-01 17:00:00
13 2016-08-01 17:21:16 V6 16 2016-08-01 17:00:00
14 2016-08-01 17:23:42 V6 17 2016-08-01 17:00:00
15 2016-08-01 17:27:16 V6 17 2016-08-01 17:00:00
16 2016-08-01 17:28:16 V9 19 2016-08-01 17:00:00
17 2016-08-01 17:29:28 V7 16 2016-08-01 17:00:00
18 2016-08-01 17:42:08 V4 17 2016-08-01 17:00:00
Для приведенного выше примера, когда я делаю head(df1$Date_time_hour)
, я получаю это:
> head(df1$Date_time_hour)
[1] "2016-08-01 12:00:00 UTC" "2016-08-01 12:00:00 UTC" "2016-08-01 13:00:00 UTC" "2016-08-01 14:00:00 UTC" "2016-08-01 15:00:00 UTC"
[6] "2016-08-01 15:00:00 UTC"
Но с моим собственным фреймом данных Owndata
, когда я делаю head(Owndata$Date_time_hour)
, я получаю это:
> head(Owndata$Date_time_hour)
[1] "2016-07-20 UTC" "2016-07-20 UTC" "2016-07-20 UTC" "2016-07-20 UTC" "2016-07-20 UTC" "2016-07-20 UTC"
Однако я знаю, что формат Date_time_hour
в моих собственных данных правильный, так как:
> str(Owndata$Date_time_hour)
POSIXct[1:2841756], format: "2016-07-20 00:00:00" "2016-07-20 00:00:00" "2016-07-20 00:00:00" "2016-07-20 00:00:00" "2016-07-20 00:00:00" "2016-07-20 00:00:00"
Просто еще одна подсказка:
> dput(head(Owndata))
structure(list(Date_time_hour = structure(c(1468972800, 1468972800,
1468972800, 1468972800, 1468972800, 1468972800), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), Date = structure(c(17002, 17002, 17002,
17002, 17002, 17002), class = "Date"), LN = c(0.407596172920513,
0.407596172920513, 0.407596172920513, 0.407596172920513, 0.407596172920513,
0.407596172920513)), .Names = c("Date_time_hour", "Date", "LN"
), row.names = c(NA, 6L), class = "data.frame")
Мой Owndata
фрейм данных имеет 2841756 строк. Я не знаю, в этом ли причина ... Хотя это было бы странно ...