我对R中的编码很陌生,而且似乎不知道这里的问题是什么,在我尝试创建一个新列时,difftime()函数总是将结果显示为0。
all_trips$ride_length <- difftime(all_trips$ended_at,all_trips$started_at)一瞥
$ started_at <chr> "2019-04-01 00:02:22",
$ ended_at <chr> "2019-04-01 00:09:48",发布于 2022-07-12 12:25:58
欢迎来到这里!通常,请使用minimal reproducible example或类似的方式发布数据集相关部分的dput()。
输出中的<chr>表示列是字符向量,而不是日期时间。
正如jay.sf在注释中指出的那样,difftime()可以以某些格式解析字符向量,并且应该能够解析文章中给出的单个示例。
不过,通常情况下,最好将日期时间存储为内置日期时类之一,即POSIXct或POSIXlt,而不是依赖于隐式强制。为使他们皈依:
all_trips$started_at <- as.POSIXct(all_trips$started_at)
all_trips$ended_at <- as.POSIXct(all_trips$ended_at)
# Calculate diff time
all_trips$ride_length <- difftime(
all_trips$ended_at,
all_trips$started_at,
units = "secs"
)如果转换不起作用,您将得到一个错误:
as.POSIXct(c("2019-04-01 00:02:22", "not a valid date time"))
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format如果您尝试将difftime()与字符向量一起使用,而该字符向量不是明确的日期时间,那么这也是相同的错误。
这个post是R对日期/时间类的内部处理的有用的讨论。
https://stackoverflow.com/questions/72952250
复制相似问题