我有一个类似以下内容的数据集:

df <- 
  read.table(textConnection("ID   Column1   Column2
A 0 1
A 1 0
A 1 0
A 1 0
A 0 1
A 1 0
A 0 1
A 0 0 
A 1 0 
A 1 0
B 0 1
B 1 0 
C 0 1
C 0 0
C 1 0"), header=TRUE)

我希望在dplyr中创建一个GROUP_BY ID,它维护Column2=‘1’的记录,并且它下面的记录具有Column1=‘1’.这可能会在每个ID上发生一次以上;应排除所有其他记录.因此,上面的输出应该是:

ID Column1 Column2
A 0 1
A 1 0
A 0 1
A 1 0
B 0 1
B 1 0

如有任何帮助,我们将不胜感激,谢谢!

推荐答案

您可以使用laglead:

library(dplyr)

df %>%
  group_by(ID) %>%
  filter(lead(Column1) == 1 &     Column2  == 1 |
              Column1  == 1 & lag(Column2) == 1) %>%
  ungroup()

# # A tibble: 6 × 3
#   ID    Column1 Column2
#   <chr>   <int>   <int>
# 1 A           0       1
# 2 A           1       0
# 3 A           0       1
# 4 A           1       0
# 5 B           0       1
# 6 B           1       0

R相关问答推荐

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

使用geom_segment()对y轴排序

使用sf或terra的LINESTRAING的累积长度

哪一行和行和 Select 特定行,但是考虑到Nas

随机森林的带Shap值的蜂群图

使用未知字符数(不受限制的最大长度)的Lookback有什么好的替代方案?

观察器中的inaliateLater的位置

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

层次树图的数据树

防止正则表达式覆盖以前的语句

数据集上的R循环和存储模型系数

如何在GALT包的函数&geom_x样条线中调整线宽

如何使用grepl()在数据帧列表中 Select 特定字符串?

将某个阈值以下的列中的值分类到不同的列中,否则保持该列的原样

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

如何修复geom_rect中的层错误?

向内存不足的数据帧添加唯一行

看似重叠的剧情

如何在调查包中获得与行比例相关的配置项?