首页 > 解决方案 > 如何将“difftime”更改为数字

问题描述

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

在此处输入图像描述

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

标签: r

解决方案


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

df1$ADY <- as.numeric(df1$ADY)

如果有不止一列,只需检查 column class,创建一个逻辑向量,使用它来选择列,遍历选定的列并转换为数字,然后分配回相同的列

i1 <- sapply(df1, class) == "difftime"
df1[i1] <- lapply(df1[i1], as.numeric)

举个例子

> 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

推荐阅读