我有一个非常简单的问题,但由于某种原因,我无法解决问题。我试图在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)
感谢您的帮助!
答案 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