首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件过滤分组行序列

条件过滤分组行序列
EN

Stack Overflow用户
提问于 2022-01-04 10:55:07
回答 2查看 36关注 0票数 0

在这类数据中:

代码语言:javascript
复制
df <- data.frame(
  id = 1:12,
  Sequ = c(1,1,1,1,
           3,3,3,
           5,5,5,
           6,6),
  N_ipu = c(1,0,1,1,
            1,4,1,
            1,1,1,
            5,1)
)

我需要删除包含在列0 1.之外的列N_ipu中的连续行的Sequ。我试过以下几种方法,但没有取得什么成功:

代码语言:javascript
复制
df %>%
  group_by(Sequ) %>%
  # filter(N_ipu %in% c(1,0))
  # filter(if_all(N_ipu) %in% c(1,0))
  # filter(if_all(N_ipu), ~all(.) %in% c(1,0))

使用dplyr,我如何将df作为只包含01的整体在Sequ上进行子集?所需的输出如下:

代码语言:javascript
复制
   id Sequ N_ipu
1   1    1     1
2   2    1     0
3   3    1     1
4   4    1     1
8   8    5     1
9   9    5     1
10 10    5     1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-04 10:59:04

使用any移除组的所有元素,使用!反转所选内容。

代码语言:javascript
复制
df %>% 
  group_by(Sequ) %>% 
  filter(!any(N_ipu > 1))

# A tibble: 7 x 3
# Groups:   Sequ [2]
     id  Sequ N_ipu
  <int> <dbl> <dbl>
1     1     1     1
2     2     1     0
3     3     1     1
4     4     1     1
5     8     5     1
6     9     5     1
7    10     5     1
票数 1
EN

Stack Overflow用户

发布于 2022-01-04 11:01:26

你很亲密

代码语言:javascript
复制
df %>%
  group_by(Sequ) %>%
   filter(all(N_ipu %in% c(1,0)))

代码语言:javascript
复制
     id  Sequ N_ipu
  <int> <dbl> <dbl>
1     1     1     1
2     2     1     0
3     3     1     1
4     4     1     1
5     8     5     1
6     9     5     1
7    10     5     1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70577644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档