我有一个约有60000个条目的数据集和一个包含值0和1的列(2)。我想为值1之前的每12行分配值3。0和1的值不定期出现在我的数据集中。
1. 0
2. 0
3. 0
4. 0
5. 0
6. 0
7. 0
8. 0
9. 0
10. 0
11. 0
12. 0
13. 1
14. 0
15. 0
在上面的示例中,我想将值3分配给1到12的行:
1. 3
2. 3
3. 3
4. 3
5. 3
6. 3
7. 3
8. 3
9. 3
10. 3
11. 3
12. 3
13. 1
14. 0
15. 0
非常感谢您的帮助。
答案 0 :(得分:1)
set.seed(123)
df <- data.frame(var1 = sample(c(0,1), 100, T, c(0.97, 0.03)))
df$var1[sapply(which(df$var1 == 1), function(x) seq(x -1, x-12))] <- 3
head(df, 25)
var1
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 3
13 3
14 3
15 3
16 3
17 3
18 3
19 3
20 3
21 3
22 3
23 3
24 1
25 0
答案 1 :(得分:0)
使用sapply检查数据框中每一行的条件:
dt <- data.frame(x = rep(c(rep(0,15),1),5))
dt$y <- if_else(sapply(seq_len(nrow(dt)), function(x) {any(dt[(x+1):(x+12),'x']==1)}),3,dt$x)