R:difftime()输入的开始/停止时间顺序相反?
使用difftime()时,我生成的结果(1)符号不正确,(2)值不正确。下面是我的代码的一个工作示例,它复制了这个问题。可以看出,1953年是1986年之前。它不应该产生一个正号的输出吗R:difftime()输入的开始/停止时间顺序相反?,r,date,time,R,Date,Time,使用difftime()时,我生成的结果(1)符号不正确,(2)值不正确。下面是我的代码的一个工作示例,它复制了这个问题。可以看出,1953年是1986年之前。它不应该产生一个正号的输出吗 x <- c("1953/05/24", "1930/04/16", "1986/04/01") x <- as.Date(x, format="%Y/%m/%d") str(x) Date[1:3], format: "1953-05-24", "1930-04-16", "1986-0
x <- c("1953/05/24", "1930/04/16", "1986/04/01")
x <- as.Date(x, format="%Y/%m/%d")
str(x)
Date[1:3], format: "1953-05-24", "1930-04-16", "1986-04-01"
y <- "1986/04/26"
y <- as.Date(y, format="%Y/%m/%d")
str(y)
Date[1:1], format: "1986-04-26"
z <- difftime(x, y, units = "weeks") %>% as.numeric(.) %>% "*"(1/52.25)
z[1]
[1] -32.87765
x您的代码中有两个错误。首先是difftime()
中x
和y
的顺序。第二个不准确性是乘数。一年过去了
这应该起作用:
z <- difftime(y, x, units = "weeks") / 52.1775
#> z
#Time differences in weeks ## Programmer's note: those are actually years.
#[1] 32.92333176 56.02852899 0.06844768
z
#以周为单位的时差程序员注:这些实际上是年。
#[1] 32.92333176 56.02852899 0.06844768
如果使用天而不是周作为计算单位,计算会变得更容易,因为这允许使用众所周知的每年365.25天的近似值:
z <- difftime(y, x, units = "days") / 365.25
#> z
#Time differences in days ## Programmer's note: Those, too, are years:
#[1] 32.92265572 56.02737851 0.06844627
z
#以天为单位的时差程序员注:这些也是年:
#[1] 32.92265572 56.02737851 0.06844627
在四个有效数字内,结果与之前相同 您的代码中有两个错误。首先是difftime()
中x
和y
的顺序。第二个不准确性是乘数。一年过去了
这应该起作用:
z <- difftime(y, x, units = "weeks") / 52.1775
#> z
#Time differences in weeks ## Programmer's note: those are actually years.
#[1] 32.92333176 56.02852899 0.06844768
z
#以周为单位的时差程序员注:这些实际上是年。
#[1] 32.92333176 56.02852899 0.06844768
如果使用天而不是周作为计算单位,计算会变得更容易,因为这允许使用众所周知的每年365.25天的近似值:
z <- difftime(y, x, units = "days") / 365.25
#> z
#Time differences in days ## Programmer's note: Those, too, are years:
#[1] 32.92265572 56.02737851 0.06844627
z
#以天为单位的时差程序员注:这些也是年:
#[1] 32.92265572 56.02737851 0.06844627
在四个有效数字内,结果与之前相同