每年订购4个事件为绝对数字

时间:2017-10-16 19:43:37

标签: r dataframe time formatting

我有一个非常简单的问题,但由于某种原因,我无法解决问题。我试图在R中做到这一点,但实际上,这更像是一个数学/思维体操问题..

我有以这种方式组织的数据: - 注意第3年活动3缺失

 Year    event    
  1        1    
  1        2    
  1        3    
  1        4    
  2        1    
  2        2    
  2        3    
  2        4
  3        1    
  3        2    
  3        4
  3        4      

我正在尝试获得一个列,其中我有一个从1到12的唯一编号(让我们称之为t1以来捕获动物的每个场合)。结果应如下所示:

 Year    Event       Occasion
  1        1             1
  1        2             2
  1        3             3
  1        4             4
  2        1             5
  2        2             6
  2        3             7
  2        4             8
  3        1             9
  3        2            10
  3        4            12
  3        4            12

我还需要这样做,如果有一条线丢失(例如我上面的例子中没有年级3事件3),我也会跳过这个'场合'的事件(绝对值),仍然有12个作为第3年事件4的场合。我显然不能简单地排列它们并计算行数,因为我有多行需要关联到相同的场合(例如2行与year3 / EVENT4 / occasion12)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以使用一个简单的公式,如下所示:

library(tidyverse)
df <- tribble(
  ~year, ~event,    
  1,        1,    
  1,        2,    
  1,        3,    
  1,        4,   
  2,        1,   
  2,        2,   
  2,        3,   
  2,        4,
  3,        1,    
  3,        2,    
  3,        4,
  3,        4      
)
df %>%
  mutate(occasion = ((year - 1) * 4) + event)

输出:

    year event occasion
   <dbl> <dbl>    <dbl>
1      1     1        1
2      1     2        2
3      1     3        3
4      1     4        4
5      2     1        5
6      2     2        6
7      2     3        7
8      2     4        8
9      3     1        9
10     3     2       10
11     3     4       12
12     3     4       12