如何将“difftime”更改为数字

Sta*_*taq -2 r

我有一些看起来像这样的变量:

在此输入图像描述

当我尝试绘制它时,我会收到错误代码discrete value supplied to continuous scale。所以我必须将其更改为数字。我有多个这种类型的变量。这是我将它们一次性全部转换为数字的方法吗?

akr*_*run 5

它只是一个建立在numeric. 我们只需要as.numeric并分配回同一列

df1$ADY <- as.numeric(df1$ADY)
Run Code Online (Sandbox Code Playgroud)

如果有多于一列,只需检查该列class,创建一个逻辑向量,使用它来选择列,循环选定的列并转换为数字,然后分配回相同的列

i1 <- sapply(df1, class) == "difftime"
df1[i1] <- lapply(df1[i1], as.numeric)
Run Code Online (Sandbox Code Playgroud)

举个例子

> df1 <- data.frame(ADY = difftime(Sys.time() + 5, Sys.time(), units = 'sec'))
> str(df1)
'data.frame':   1 obs. of  1 variable:
 $ ADY: 'difftime' num 4.99964213371277
  ..- attr(*, "units")= chr "secs"
> df1$ADY <-  as.numeric(df1$ADY)
> str(df1)
'data.frame':   1 obs. of  1 variable:
 $ ADY: num 5
Run Code Online (Sandbox Code Playgroud)

  • 如果您有任何两类列(例如,`c("POSIXt", "POSIXct")`),`sapply(df1, class) == "difftime"`将会出错。另一种选择:`sapply(df1,继承,“difftime”)`。 (3认同)