以下是我的虚拟数据

    year <- c(2012, 2012, 2013, 2019, 2020, 2021, 2022)
    individual <- c(1, 1, 1, 2, 2, 3, 3)
    group <- c("A", "B", "A", "A", "B", "A", "B")
    mass <- c(84.3, 82.5, 80.6, 79.2, 82.8, 79.1, 82.6)
    dataset <- data.frame(year, individual, group, mass)

我有两个"组"中每只鸟10年的体重数据.正如您将从虚拟数据集中看到的,我有一些实例,其中有一个组有大量数据,但另一个组没有(个人1,2013年).我只想包括我有个人质量的‘A组’和‘B组’数据.我只是想不出如何以这种方式过滤数据--理想情况下是使用dplyr的Filter()命令.

我很抱歉,如果这是另一个帖子的复制,我只是找不到一个答案来帮助我做这个精确的过滤任务.

    df2 <- dataset %>%
      group_by(individual, year) %>% filter(n()>1)

^我使用此代码将每年的数据按个人分组,以使其仅包括出现多次的个人(一个个人每年只能在每个组中出现一次).然而,从这里我想不出如何排除A组或B组的第三行个人数据,但不能同时排除这两组数据.我需要一个数据集,它只包括我在给定年份同时具有A组和B组质量值的个人.

推荐答案

使用

dataset %>%
  filter(all(c('A', 'B') %in% group), .by = c(year, individual))

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

使用sensemakr和fixest feols模型(R)

R箱形图gplot 2 4组但6个参数

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

如何使用列表中多个列表中的第一条记录创建数据框

如何同时从多个列表中获取名字?

通过在colname中查找其相应值来创建列

如何将Which()函数用于管道%>;%

Geom_arcbar()中出错:找不到函数";geom_arcbar";

如何将这个小列表转换为数据帧?

仅当后续值与特定值匹配时,才在列中回填Nas

带RStatix的Wilcoxon环内检验

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

R-使用stri_trans_General()将其音译为德语字母

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

抽样变换-REXP与RWEIBUR

将仪表板中的值框大小更改为Quarto

如果y中存在x中的值,则将y行中的多个值复制到相应的x行中

Gggvenn为Venn增加了不存在的价值