R 如何根据某些条件删除行
我的数据如下所示:R 如何根据某些条件删除行,r,R,我的数据如下所示: row ID YU DV 1 1 0 . 2 1 . . 3 1 . . 4 1 . . 5 1 45 . 6 1 . 7 7 1 . . 8 1 . . 9 1 . . 10 1 65 . 11 1 . 5 12 1 . . 13 1 . . 14 1 . .
row ID YU DV
1 1 0 .
2 1 . .
3 1 . .
4 1 . .
5 1 45 .
6 1 . 7
7 1 . .
8 1 . .
9 1 . .
10 1 65 .
11 1 . 5
12 1 . .
13 1 . .
14 1 . .
15 2 20 .
16 2 . .
17 2 . 5
18 2 . .
19 2 . .
20 2 0 .
21 2 . .
22 2 . .
23 2 . .
24 2 43 .
25 2 . 3
26 2 . .
27 2 . .
28 2 . .
因此,每当YU列中的值变为0时,我希望它所在的行变为零,以及后面的所有行,直到YU中的值变为非零,由包含值1(如果不是零)的变量DF标识。我希望它看起来像这样:
row ID YU DV DF
1 1 0 . 1
2 1 . . 1
3 1 . . 1
4 1 . . 1
5 1 45 . 0
6 1 . 7 0
7 1 . . 0
8 1 . . 0
9 1 . . 0
10 1 65 . 0
11 1 . 5 0
12 1 . . 0
13 1 . . 0
14 1 . . 0
15 2 20 . 0
16 2 . . 0
17 2 . 5 0
18 2 . . 0
19 2 . . 0
20 2 0 . 1
21 2 . . 1
22 2 . . 1
23 2 . . 1
24 2 43 . 0
25 2 . 3 0
26 2 . . 0
27 2 . . 0
28 2 . . 0
使用
dplyr
和tidyr
的解决方案:
library(dplyr); library(tidyr);
df %>% mutate(DF = as.integer(as.numeric(as.character(YU)) == 0)) %>% fill(DF)
row ID YU DV DF
1 1 1 0 . 1
2 2 1 . . 1
3 3 1 . . 1
4 4 1 . . 1
5 5 1 45 . 0
6 6 1 . 7 0
7 7 1 . . 0
8 8 1 . . 0
9 9 1 . . 0
10 10 1 65 . 0
11 11 1 . 5 0
12 12 1 . . 0
13 13 1 . . 0
14 14 1 . . 0
15 15 2 20 . 0
16 16 2 . . 0
17 17 2 . 5 0
18 18 2 . . 0
19 19 2 . . 0
20 20 2 0 . 1
21 21 2 . . 1
22 22 2 . . 1
23 23 2 . . 1
24 24 2 43 . 0
25 25 2 . 3 0
26 26 2 . . 0
27 27 2 . . 0
28 28 2 . . 0
这里是另一个带有
数据的选项。表
和动物园
library(data.table)
library(zoo)
setDT(df1)[, DF := na.locf(+(!as.numeric(YU)))]
df1
# row ID YU DV DF
# 1: 1 1 0 . 1
# 2: 2 1 . . 1
# 3: 3 1 . . 1
# 4: 4 1 . . 1
# 5: 5 1 45 . 0
# 6: 6 1 . 7 0
# 7: 7 1 . . 0
# 8: 8 1 . . 0
# 9: 9 1 . . 0
#10: 10 1 65 . 0
#11: 11 1 . 5 0
#12: 12 1 . . 0
#13: 13 1 . . 0
#14: 14 1 . . 0
#15: 15 2 20 . 0
#16: 16 2 . . 0
#17: 17 2 . 5 0
#18: 18 2 . . 0
#19: 19 2 . . 0
#20: 20 2 0 . 1
#21: 21 2 . . 1
322: 22 2 . . 1
323: 23 2 . . 1
#24: 24 2 43 . 0
#25: 25 2 . 3 0
#26: 26 2 . . 0
#27: 27 2 . . 0
#28: 28 2 . . 0
或者其他选择是
with(df1, na.locf(c(NA, 0, 1)[(YU!=".") + (YU=="0")+1]))
#[1] 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
你在用什么编程语言?你能分享你试过的任何代码吗?@pseudoAJ 8我在用r。我正在尝试这样的事情:for(我在unique(data$ID)中){data$DF 0只应该被识别。你真的有
或者他们是NA
?x@rawr它是。没有NA