根据列删除条件行

标签 r grouping

我正在尝试删除属于同一 TRIAL 组和具有空特征值的 Trait 组的行

dt <- tibble(
TRIAL = c("M20-07RND1", "M20-07RND1", "M20-07RND1", " M20-07RND1", " M20-06RND5", " M20-06RND5", " M20-06RND5", " M20-06RND5", " V-01RND1", " V-01RND1", " V-01RND1", "V-01RND1"),
  PLOT= c(1, 2, 3, 1, 6, 3, 2, 3, 1,67,34,34),
  trait = c("ASI", "ASI", "AD", "AD", "ASI", "ASI", "FY", "FY", "FOR", "FOR", "CY", "CY"),
  trialValue = c(2, 7, 2, 2, NA,34 ,NA ,NA ,10 ,NA ,NA ,NA)
)

# # A tibble: 11 x 4
 #      TRIAL     PLOT  trait    trialValue
        <chr>     <dbl> <chr>      <dbl 
  #1   M20-07RND1   1    ASI        2
  #2   M20-07RND1   2    ASI        7
  #3   M20-07RND1   3    AD         2
  #4   M20-07RND1   1    AD         2
  #5   M20-06RND5   6    ASI               
  #6   M20-06RND5   3    ASI       34
  #7   M20-06RND5   2    FY
  #8   M20-06RND5   3    FY
  #9   V-01RND1     1    FOR       10
  #10  V-01RND1     67   FOR
  #11  v-01RND1     34   CY
  #12  v-01RND1     34   CY

这就是我想要实现的目标:如果一组特征具有空特征值并且属于同一个 TRIAL 组,则删除满足条件的整行。

 # # A tibble: 11 x 4
 #      TRIAL     PLOT  trait     trialValue
        <chr>     <dbl> <chr>       <dbl 
  #1   M20-07RND1   1    ASI         2
  #2   M20-07RND1   2    ASI         7
  #3   M20-07RND1   3    AD          2
  #4   M20-07RND1   1    AD          2
  #5   M20-06RND5   6    ASI               
  #6   M20-06RND5   3    ASI        34
  #9   V-01RND1     1    FOR        10
  #10  V-01RND1     67   FOR

我不知道该怎么办,请帮忙。

最佳答案

library(dplyr)

dt %>% 
  group_by(TRIAL, trait) %>% 
  filter(sum(trialValue, na.rm = TRUE) != 0)

# A tibble: 8 x 4
# Groups:   TRIAL, trait [5]
  TRIAL          PLOT trait trialValue
  <chr>         <dbl> <chr>      <dbl>
1 "M20-07RND1"      1 ASI            2
2 "M20-07RND1"      2 ASI            7
3 "M20-07RND1"      3 AD             2
4 " M20-07RND1"     1 AD             2
5 " M20-06RND5"     6 ASI           NA
6 " M20-06RND5"     3 ASI           34
7 " V-01RND1"       1 FOR           10
8 " V-01RND1"      67 FOR           NA

关于根据列删除条件行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71020507/

相关文章:

r - 在 R 中跳过 read.csv 中的一些行

postgresql - Postgres : Grouping data with overlapping group members

mysql - 计算与 MySQL 中的多个条件中的每一个匹配的行

Javascript 复杂分组

r - 错误 : Problem with `mutate()` column (. ..) 必须是大小 15 或 1,而不是 17192

r - R 中的凹坑 dPlot 颜色 x 轴条值

r - 如何在函数内部将名称中具有模式的所有变量放入列表中

r - 将指数分布叠加到直方图上

r - 表示每个组内有超过 1 列的组索引

regex - 使用带有 sed 的正则表达式分组替换字符