假设我们有以下指标向量:
library(dplyr)
tibble(row = 1:20,
indicator = rep(c(rep(0, 5), 1, rep(0, 4)), 2))
row indicator
<int> <dbl>
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 1
7 7 0
8 8 0
9 9 0
10 10 0
11 11 0
12 12 0
13 13 0
14 14 0
15 15 0
16 16 1
17 17 0
18 18 0
19 19 0
20 20 0
如何轻松地创建一个列,指示指示器列周围的区域。例如,如果我想创建三个大小为N = 1,3和5的“区域”,那么所需的输出应该如下所示:
row indicator region_n1 region_n3 region_n5
<int> <dbl> <dbl> <dbl> <dbl>
1 1 0 0 0 0
2 2 0 0 0 0
3 3 0 0 0 0
4 4 0 0 0 1
5 5 0 0 1 1
6 6 1 1 1 1
7 7 0 0 1 1
8 8 0 0 0 1
9 9 0 0 0 0
10 10 0 0 0 0
11 11 0 0 0 0
12 12 0 0 0 0
13 13 0 0 0 0
14 14 0 0 0 1
15 15 0 0 1 1
16 16 1 1 1 1
17 17 0 0 1 1
18 18 0 0 0 1
19 19 0 0 0 0
20 20 0 0 0 0
当指标变量中只有一个“1”时,我可以通过排序对此进行编码,但当有多个“1”时,我会很挣扎。
2条答案
按热度按时间ilmyapht1#
对
lag
和lead
使用用户定义函数:r8xiu3jd2#
在Base R中,你可以:
创建于2023-04-14带有reprex v2.0.2
注意,我使用
stats::
是因为还有dplyr::filter
,并且可能dplyr
已经加载到您的终端,这从stats包中屏蔽了filter
。