我有以下数据框:
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'
它不起作用且时间列中的时间仍然相同,我认为对行进行子集化有些问题