将数据框中列的时区更改为不同的时区

时间:2016-07-21 07:01:08

标签: r dataframe data-analysis posixct posixlt

我有以下数据框:

  time_df=data.frame(id=c(1,2,3,4,5,6,7), 
      time=c('2016-06-15T13:22:33.378Z','2016-06-15T08:25:49.310Z','2016-06-19T02:34:28.946Z','2016-06-13T08:13:46.815Z','2016-06-22T16:03:17.610Z','2016-06-21T03:36:45.468Z','2016-06-19T14:13:29.011Z'),
      time_zone=c('Asia/Jakarta','Asia/Jakarta','Asia/Jayapura','Asia/Jayapura','Asia/Jakarta','Asia/Jakarta','Asia/Jayapura'))


  id                     time     time_zone
1  1 2016-06-15T13:22:33.378Z  Asia/Jakarta
2  2 2016-06-15T08:25:49.310Z  Asia/Jakarta
3  3 2016-06-19T02:34:28.946Z Asia/Jayapura
4  4 2016-06-13T08:13:46.815Z Asia/Jayapura
5  5 2016-06-22T16:03:17.610Z  Asia/Jakarta
6  6 2016-06-21T03:36:45.468Z  Asia/Jakarta
7  7 2016-06-19T14:13:29.011Z Asia/Jayapura

时间列的时间列在欧洲/柏林'时区,我需要将每行中的时间更改为time_zone列中的等效时区

我采用这种方法:  首先我将时间列转换为POSIXct:

time_df$time=as.POSIXlt(time_df$time,format = "%Y-%m-%dT%H:%M:%S",tz="Europe/Berlin")

它有效, 但是当我尝试使用以下代码更改时区时:

attr(time_df$time[time_df$time_zone=='Asia/Jakarta'], "tzone") <-'Asia/Jakarta'
attr(time_df$time[time_df$time_zone=='Asia/Jayapura'], "tzone") <-'Asia/Jayapura'

它不起作用且时间列中的时间仍然相同,我认为对行进行子集化有些问题

0 个答案:

没有答案