【发布时间】:2018-06-18 22:41:48
【问题描述】:
假设我有一个数据框event_data,看起来像这样:
ID event_one event_two
1 A 1 8
2 B 3 5
3 C 9 13
4 D 9 13
5 E 10 10
6 F 13 15
7 G 13 17
8 H 14 17
9 I 15 19
event 列是从某个初始时间 0 到事件发生所经过的时间量。所以对于对象C,event_one 发生在时间 9,event_two 发生在时间 13。
我想要的是取times的向量:
> times = 0:20
> times
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
然后浏览这两列,找出每次发生的次数。输出应如下所示:
time event_ones event_twos
0 0 0
1 1 0
2 0 0
3 1 0
4 0 0
5 0 1
6 0 0
7 0 0
8 0 1
9 2 0
10 1 1
11 0 0
12 0 0
13 2 2
14 1 0
15 1 1
16 0 0
17 0 2
18 0 0
19 0 1
20 0 0
我意识到我可以通过遍历times 中的每个元素并迭代地构建表格来解决这个问题,但是你不应该在 R 中这样做,我怀疑有一种更清洁的方法来做到这一点。如果可能的话,它也应该推广到任意多的列(我给出的例子是简化的;我的真实数据有更多这样的事件,我必须找到时间计数)。
【问题讨论】:
标签: r for-loop dataframe vector