Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:difftime()输入的开始/停止时间顺序相反?_R_Date_Time - Fatal编程技术网

R:difftime()输入的开始/停止时间顺序相反?

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

使用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-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
在四个有效数字内,结果与之前相同