r - 如何在 R 中计算圆形域(工作日)中的相对差

标签 r statistics time-series modulo

我想找到一周中某一天到一周中另一天的相对距离。假设以下 R 输入是从第 0 天开始的相对差异(以天为单位):

day <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)

该域的周期为一周(即 7 天)。我想获得以下值:

relativedist <- c(0, 1, 2, 3, 3, 2, 1, 0, 1, 2, 3, 3, 2, 1, 0)

使用模是自然的第一个猜测,但正如预期的那样,不正确 - 它不适用于循环域:

day%%4 

结果

[1] 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2

我查看了circularcircStats包,但未能找到适用的函数。

最佳答案

在这种情况下,pmin 函数将给出正确的答案,但您的数据被安排为在自然边界处开始和停止,因此您需要确保它与您需要的一样通用(它确实提供了与 @NickK 提供的 diffFromNearest 函数相同的序列(以 1:20 作为输入):

> pmin( day %% 7, rev(day)%%7)
 [1] 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0

pminpmax 函数执行“两个向量的并排比较”。

这使用 pmin 和模算术实现了 @NickK 过程中的逻辑:

pmin( day %% 7, (7-day)%%7)


> replicate( 20, {day = sample(1:30, 20); identical( pmin( day %% 7, (7-day)%%7), 
                                                     diffFromNearest(day, 7) )} )
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[16] TRUE TRUE TRUE TRUE TRUE

关于r - 如何在 R 中计算圆形域(工作日)中的相对差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782886/

相关文章:

iphone - 移动应用统计 API

r - 在 R 中的图中添加第二个图例

r - 在R中的plotly饼图中使用自定义图标

RSQLite 并将数据读入内存

r - 如何使用R中的ggplot在不同类别的数据中制作不同的图案和颜色?

r - 解释每周和每年季节性的先知输出

用于时间序列和聚合的数据库系统

python - 如何将 pandas 中的 TimeSeries 对象转换为整数?

r - 如何在 R 的字符类中包含右方括号?

R嵌套的Foreach并行化不起作用