我正试图将这个向量(v)转换为Unix时间戳。年、月、日、时、分、秒都不重要,但需要引入。
v = c("10ms", "20ms", "30ms", ..., "800ms")
A)我想从。
x <- c("2000-01-01 0:00:00.000", "2000-01-01 0:00:00.010", "2000-01-01 0:00:00.020")
y <- as.POSIXct(x, format = "%Y-%m-%d %H:%M:%OS", origin = "1970-01-01", tz = "America/Chicago")
y = format(y, "%Y-%m-%d %H:%M:%OS4")
B) 然后把它转换成Unix时间戳:
z = as.numeric(as.POSIXct(y,format = "%Y-%m-%d %H:%M:%OS4", origin = "1970-01-01", tz = "America/Chicago"))
这样就可以得到: NA NA NA
z = as.numeric(as.POSIXct(y,format = "%Y-%m-%d %H:%M:%OS", origin = "1970-01-01", tz = "America/Chicago"))
这就产生了。946706400 946706400 946706400
希望得到任何帮助。
这个问题出奇的简单,要解决。在你的例子中。z
其实 是否 包含小数部分,但由于数字太大,所以没有打印到控制台。如果你把它转换为一个字符,你应该得到你想要的结果。
as.character(round(z, 3))
#> [1] "946706400" "946706400.01" "946706400.02"
或者取决于你选择的格式:
y <- as.POSIXct("2000-01-01") + lubridate::milliseconds(1:10)
format(round(as.numeric(y), 3), digits = 13)
#> [1] "946684800.001" "946684800.002" "946684800.003" "946684800.004" "946684800.005"
#> [6] "946684800.006" "946684800.007" "946684800.008" "946684800.009" "946684800.010"