提问人:confusedindividual 提问时间:4/6/2022 最后编辑:Maëlconfusedindividual 更新时间:4/6/2022 访问量:1575
删除与 r 中的特定条件不匹配的行
Removing rows that do not match a certain condition in r
问:
我有一个包含多列的数据帧,我想删除不满足特定条件的行。我只想将数据帧中 -1 后跟 1 的行保留在其中一列中。
示例 data.frame
column a column b
1 1 1
2 3 -1
3 8 1
4 10 -1
5 12 1
6 15 1
输出示例:
column a column b
1 3 -1
2 8 1
3 10 -1
4 12 1
答:
3赞
Gregor Thomas
4/6/2022
#1
您可以使用:dplyr
library(dplyr)
your_data %>%
filter(
(`column b` == -1 & lead(`column b`) == 1) |
(`column b` == 1 & lag(`column b`) == -1)
)
# column a column b
# 2 3 -1
# 3 8 1
# 4 10 -1
# 5 12 1
使用此输入数据:
your_data = read.table(text = ' "column a" "column b"
1 1 1
2 3 -1
3 8 1
4 10 -1
5 12 1
6 15 1', header = T, check.names = FALSE)
2赞
Maël
4/6/2022
#2
library(tidyverse)
df %>%
group_by(grp = cumsum(lead(df$column_b) == 1 & df$column_b == -1)) %>%
filter(grp > 0, row_number() %in% 1:2)
# A tibble: 4 x 3
# Groups: grp [2]
column_a column_b grp
<int> <int> <int>
1 3 -1 1
2 8 1 1
3 10 -1 2
4 12 1 2
评论