如何在 NA 中解决 as.POSIXct return?
How to solve as.POSIXct return in NA?
我有一个 data.frame 列 time
和 05:39:18 23-Oct-2016
。
我尝试 运行 as.POSIXct
创建另一列,但 returns 不适用。我做了很多事情,但没有任何改变。
structure
(list(id = c(111868L, 111868L, 111868L, 111868L, 111868L,
111868L),
time = c("05:39:18 23-Oct-2016", "08:08:56 23-Oct-2016", "08:50:41 23-Oct-2016", "09:39:41 23-Oct-2016", "10:30:41 23-Oct-2016", "11:11:11 23-Oct-2016"),
lq = c("3", "B", "A", "2", "B", "B"),
lat = c(-20.3108, -20.3103, -20.3108, -20.3098, -20.3091, -20.3087),
lon = c(-40.2825, -40.2822, -40.2861, -40.2815, -40.2804, -40.2802),
error_semimajor_axis = c(770L, 33105L, 4046L, 651L, 1282L, 10379L),
error_semiminor_axis = c(48L, 42L, 31L, 123L, 1077L, 83L),
error_ellipse_orientation = c(109L, 110L, 77L, 147L, 83L, 94L)),
row.names = c(NA, 6L),
class = "data.frame")
srt(l)
'data.frame': 26462 obs. of 8 variables:
$ id : int 111868 111868 111868 111868 111868 111868 111868 111868 111868 111868 ...
$ time : chr "05:39:18 23-Oct-2016" "08:08:56 23-Oct-2016" "08:50:41 23-Oct-2016" "09:39:41 23-Oct-2016" ...
$ lq : chr "3" "B" "A" "2" ...
$ lat : num -20.3 -20.3 -20.3 -20.3 -20.3 ...
$ lon : num -40.3 -40.3 -40.3 -40.3 -40.3 ...
$ error_semimajor_axis : int 770 33105 4046 651 1282 10379 2281 698 8101 1577 ...
$ error_semiminor_axis : int 48 42 31 123 1077 83 808 124 126 110 ...
$ error_ellipse_orientation: int 109 110 77 147 83 94 93 14 105 165 ...
我的数据是遥测数据,覆盖了南大西洋上的一个大面积区域,我不知道是不是这个问题。我试图用 Sys.setlocale
设置位置,但没有任何效果。
我需要 运行 这段代码,第一个有效,但是当我 运行 其他代码时,列变为 NA。
更改日期格式:添加仅包含日期而不是 hour::min::sec
的日期列
从门户检索到的原始文件中的时间最初是格林威治标准时间。
l$date <- sapply(strsplit(l$time, split=' ', fixed=TRUE), function(x) (x[2]))
l$date <- as.POSIXct(l$date, format = "%d-%b-%Y",tz = "GMT", usetz = TRUE)
l$time <- as.POSIXct(l$time, format = "%H:%M:%S %d-%b-%Y",tz = "GMT", usetz = TRUE)
谢谢!!
我唯一能想到的错误与您系统的区域设置有关。下面的示例显示了我的语言环境发生了什么。
发布的数据字符串。
x <- "05:39:18 23-Oct-2016"
重现错误。
as.POSIXct(x, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] NA
此解决方案与区域设置无关。
old_loc <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "en_US.UTF-8")
as.POSIXct(x, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] "2016-10-23 05:39:18 GMT"
又回到原来的样子
Sys.setlocale("LC_TIME", old_loc)
错误的是月份缩写,在我的国家正确的是 "out"
("outubro"
)。因此,以下内容在第一次尝试时就可以工作,而无需修改语言环境设置。
y <- "05:39:18 23-out-2016"
as.POSIXct(y, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] "2016-10-23 05:39:18 GMT"
我有一个 data.frame 列 time
和 05:39:18 23-Oct-2016
。
我尝试 运行 as.POSIXct
创建另一列,但 returns 不适用。我做了很多事情,但没有任何改变。
structure
(list(id = c(111868L, 111868L, 111868L, 111868L, 111868L,
111868L),
time = c("05:39:18 23-Oct-2016", "08:08:56 23-Oct-2016", "08:50:41 23-Oct-2016", "09:39:41 23-Oct-2016", "10:30:41 23-Oct-2016", "11:11:11 23-Oct-2016"),
lq = c("3", "B", "A", "2", "B", "B"),
lat = c(-20.3108, -20.3103, -20.3108, -20.3098, -20.3091, -20.3087),
lon = c(-40.2825, -40.2822, -40.2861, -40.2815, -40.2804, -40.2802),
error_semimajor_axis = c(770L, 33105L, 4046L, 651L, 1282L, 10379L),
error_semiminor_axis = c(48L, 42L, 31L, 123L, 1077L, 83L),
error_ellipse_orientation = c(109L, 110L, 77L, 147L, 83L, 94L)),
row.names = c(NA, 6L),
class = "data.frame")
srt(l)
'data.frame': 26462 obs. of 8 variables:
$ id : int 111868 111868 111868 111868 111868 111868 111868 111868 111868 111868 ...
$ time : chr "05:39:18 23-Oct-2016" "08:08:56 23-Oct-2016" "08:50:41 23-Oct-2016" "09:39:41 23-Oct-2016" ...
$ lq : chr "3" "B" "A" "2" ...
$ lat : num -20.3 -20.3 -20.3 -20.3 -20.3 ...
$ lon : num -40.3 -40.3 -40.3 -40.3 -40.3 ...
$ error_semimajor_axis : int 770 33105 4046 651 1282 10379 2281 698 8101 1577 ...
$ error_semiminor_axis : int 48 42 31 123 1077 83 808 124 126 110 ...
$ error_ellipse_orientation: int 109 110 77 147 83 94 93 14 105 165 ...
我的数据是遥测数据,覆盖了南大西洋上的一个大面积区域,我不知道是不是这个问题。我试图用 Sys.setlocale
设置位置,但没有任何效果。
我需要 运行 这段代码,第一个有效,但是当我 运行 其他代码时,列变为 NA。
更改日期格式:添加仅包含日期而不是 hour::min::sec
的日期列从门户检索到的原始文件中的时间最初是格林威治标准时间。
l$date <- sapply(strsplit(l$time, split=' ', fixed=TRUE), function(x) (x[2]))
l$date <- as.POSIXct(l$date, format = "%d-%b-%Y",tz = "GMT", usetz = TRUE)
l$time <- as.POSIXct(l$time, format = "%H:%M:%S %d-%b-%Y",tz = "GMT", usetz = TRUE)
谢谢!!
我唯一能想到的错误与您系统的区域设置有关。下面的示例显示了我的语言环境发生了什么。
发布的数据字符串。
x <- "05:39:18 23-Oct-2016"
重现错误。
as.POSIXct(x, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] NA
此解决方案与区域设置无关。
old_loc <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "en_US.UTF-8")
as.POSIXct(x, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] "2016-10-23 05:39:18 GMT"
又回到原来的样子
Sys.setlocale("LC_TIME", old_loc)
错误的是月份缩写,在我的国家正确的是 "out"
("outubro"
)。因此,以下内容在第一次尝试时就可以工作,而无需修改语言环境设置。
y <- "05:39:18 23-out-2016"
as.POSIXct(y, format = "%H:%M:%S %d-%b-%Y", tz = "GMT")
#[1] "2016-10-23 05:39:18 GMT"