【发布时间】:2026-01-19 09:05:01
【问题描述】:
我有一个right_join 表,其中某些列的NA 值取决于条目来自哪个表。表中的每个“命中”都有一个以 0 开头的“索引”。
我想group_by(hit, indx) 做一些条件过滤。我想最好使用dplyr。
这是数据:
test <- tibble(hit = c(rep("101mA", 4), rep("1914A", 5)),
indx = c(0, 0, 0, 1, 0, 0, 0, 0, 1),
hit_start = c(7, 63, 105, 131, 4, 7, 56, 64, 147),
hit_end = c(112, 82, 126, 152, 82, 34, 83, 81, 166),
stamp_score = c(NA, 9.32, 9.30, 9.49, NA, NA, NA, 8.16, 9.15),
bit_score = c(76.2, NA, NA, NA, 84.7, 8.3, 0.3, NA, NA)
)
这是表格:
# A tibble: 9 x 6
hit indx hit_start hit_end stamp_score bit_score
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 101mA 0 7 112 NA 76.2
2 101mA 0 63 82 9.32 NA
3 101mA 0 105 126 9.30 NA
4 101mA 1 131 152 9.49 NA
5 1914A 0 4 82 NA 84.7
6 1914A 0 7 34 NA 8.3
7 1914A 0 56 83 NA 0.3
8 1914A 0 64 81 8.16 NA
9 1914A 1 147 166 9.15 NA
在每个group_by(hit, indx) 中,如果“stamp_score”列中甚至有一个NA,我想保留带有NA 条目的行。但是,如果组的“stamp_score”列中没有NA,我想保留所有行。
这是我最后的期望:
# A tibble: 6 x 6
hit indx hit_start hit_end stamp_score bit_score
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 101mA 0 7 112 NA 76.2
4 101mA 1 131 152 9.49 NA
5 1914A 0 4 82 NA 84.7
6 1914A 0 7 34 NA 8.3
7 1914A 0 56 83 NA 0.3
9 1914A 1 147 166 9.15 NA
请注意,我打算最终将代码用于具有 >10000 次点击的表格,每个表格都有自己的“索引”。
【问题讨论】:
-
如果没有
NA,我不想过滤任何行是什么意思?意思是你想放弃没有NA的观察或者你想保留它们? -
对不起。我的意思是,如果组中的“stamp_score”列中没有
NA值,我想保留所有行。 -
请显示预期结果。这将更好地了解您的意图。谢谢。