R 的 trunc 和 round 不适用于 class 日期?
R's trunc and round not working for class Date?
从文档来看,我觉得我应该可以对 "Date" 对象使用 round 和 trunc。但是,它似乎只有在我第一次将它转换为 "POSIXct" 时才起作用。
> d <- as.Date('2019-10-21')
> trunc(d,'months')
[1] "2019-10-21"
> trunc(as.POSIXct(d),'months')
[1] "2019-10-01 CEST"
> round(as.POSIXct(d),'months')
[1] "2019-11-01 CET"
> round(d,'months')
Error in round.default(18190, "months") :
non-numeric argument to mathematical function
我希望日期和 posix 类 的输出相同。我是不是误会了什么?
?trunc
trunc takes a single numeric argument x and returns a numeric vector containing the integers formed by truncating the values in x toward 0.
round rounds the values in its first argument to the specified number of decimal places (default 0).
d <- as.Date('2019-10-21')
class(d)
#[1] "Date"
关于 POSIXct
class,可能与它们自起源以来的秒数有关。
我通常使用 r-base
功能,除非它与测试意外情况有关。
重新阅读文档后,我很清楚 "Date" 和 "POSIXt" class 的记录行为不同。 "Date" 的用法示例中省略了 units
参数。我只是在第一次阅读文档时误解了文档。您必须先转换为 POSIX 才能根据单位进行舍入和截断。
?trunc.Date
S3 method for class 'POSIXt'
trunc(x,
units = c("secs", "mins", "hours", "days", "months", "years"),
...)
S3 method for class 'Date'
trunc(x, ...)
还有:
The methods for class "Date" are of little use except to remove fractional days.
从文档来看,我觉得我应该可以对 "Date" 对象使用 round 和 trunc。但是,它似乎只有在我第一次将它转换为 "POSIXct" 时才起作用。
> d <- as.Date('2019-10-21')
> trunc(d,'months')
[1] "2019-10-21"
> trunc(as.POSIXct(d),'months')
[1] "2019-10-01 CEST"
> round(as.POSIXct(d),'months')
[1] "2019-11-01 CET"
> round(d,'months')
Error in round.default(18190, "months") :
non-numeric argument to mathematical function
我希望日期和 posix 类 的输出相同。我是不是误会了什么?
?trunc
trunc takes a single numeric argument x and returns a numeric vector containing the integers formed by truncating the values in x toward 0.
round rounds the values in its first argument to the specified number of decimal places (default 0).
d <- as.Date('2019-10-21')
class(d)
#[1] "Date"
关于 POSIXct
class,可能与它们自起源以来的秒数有关。
我通常使用 r-base
功能,除非它与测试意外情况有关。
重新阅读文档后,我很清楚 "Date" 和 "POSIXt" class 的记录行为不同。 "Date" 的用法示例中省略了 units
参数。我只是在第一次阅读文档时误解了文档。您必须先转换为 POSIX 才能根据单位进行舍入和截断。
?trunc.Date
S3 method for class 'POSIXt'
trunc(x, units = c("secs", "mins", "hours", "days", "months", "years"), ...)
S3 method for class 'Date'
trunc(x, ...)
还有:
The methods for class "Date" are of little use except to remove fractional days.