我有一个POSXIct格式的时间变量,希望将其转换为数字格式,以处理以秒为单位的差异,但当将其传递为数字格式时,秒显示为负数:

 Sys.setenv(TZ='GMT')
 
 time=c("1899-12-31 09:11:37 UTC", "1899-12-31 09:12:34 UTC", "1899-12-31 09:13:04 UTC", "1899-12-31 09:13:34 UTC", "1899-12-31 09:14:04 UTC",
        "1899-12-31 09:14:34 UTC", "1899-12-31 09:15:04 UTC", "1899-12-31 09:15:34 UTC", "1899-12-31 09:16:04 UTC", "1899-12-31 09:16:34 UTC")
 
 df<-data.frame(time)
 df$time<-as.POSIXct(df$time)
 df
                  time
1  1899-12-31 09:11:37
2  1899-12-31 09:12:34
3  1899-12-31 09:13:04
4  1899-12-31 09:13:34
5  1899-12-31 09:14:04
6  1899-12-31 09:14:34
7  1899-12-31 09:15:04
8  1899-12-31 09:15:34
9  1899-12-31 09:16:04
10 1899-12-31 09:16:34
 
 df$time<-as.numeric(df$time)
 df
          time
1  -2209042103
2  -2209042046
3  -2209042016
4  -2209041986
5  -2209041956
6  -2209041926
7  -2209041896
8  -2209041866
9  -2209041836
10 -2209041806

我如何才能将它们转化为积极的呢?这个问题与时间来源或日期有关吗?

提前谢谢!

推荐答案

是的,这个问题与日期的来源有关.您看到的数字是从1970-01-01 00:00:00开始的秒数.因为1899年是1970年之前,你会看到这个值是负值.

然而,我建议他们只保留POSIXct格式的time.你可以用它以秒为单位计算差额.

例如-

library(dplyr)
df %>% mutate(diff_in_secs = as.integer(difftime(time,lag(time), units = "secs")))

#                  time diff_in_secs
#1  1899-12-31 09:11:37           NA
#2  1899-12-31 09:12:34           57
#3  1899-12-31 09:13:04           30
#4  1899-12-31 09:13:34           30
#5  1899-12-31 09:14:04           30
#6  1899-12-31 09:14:34           30
#7  1899-12-31 09:15:04           30
#8  1899-12-31 09:15:34           30
#9  1899-12-31 09:16:04           30
#10 1899-12-31 09:16:34           30

在本例中,简单的减法也会得到相同的结果.

df %>% mutate(diff_in_secs = as.integer(time - lag(time)))

但是,对于difftime,我们可以更好地控制输出,因为我们可以指定希望得到结果的units.

R相关问答推荐

从多个前置日期中获取最长日期

如何在R中正确对齐放射状图中的文本

如何使用stat_extract_all正确提取我的目标值?

使用R中的Shapetime裁剪格栅文件

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

如何将移除事件分配给动态创建的按钮?

如何直接从Fortran到R的数组大小?

R根据条件进行累积更改

如何使用tryCatch执行语句并忽略警告?

根据列A中的差异变异列,其中行由列B中的相对值标识

根据另一列中的值和条件查找新列的值

在R中的数据框上使用Apply()函数时,如何保留非数字列?

如何阻止围堵地理密度图?

用多边形替换地块点

如何预测原始数据集并将值添加到原始数据集中

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹

R中的Desolve:返回的导数数错误

在鼠标悬停时使用Plotly更改geom_point大小

R dplyr::带有名称注入(LHS of:=)的函数,稍后在:=的RHS上引用

如何使用ggsurvfit包更改风险表中的标签名称?