【问题标题】:How do I keep every ID which meet a condition at least once?如何保留每个满足条件的 ID 至少一次?
【发布时间】:2022-09-28 13:58:18
【问题描述】:

如何保留每个满足条件的 ID 至少一次?

我有一个重复测量的df。现在我想保留至少一次满足条件的所有行。我尝试了一个 dplyr group_by 但我总是只得到满足条件的行并放弃该个人的所有其他测量。

dat2 <- dat1 %>%
  group_by(id) %>%
  filter(category==\"blood\") %>%
  ungroup()

提前致谢!

  • dat1 %&gt;% group_by(id) %&gt;% filter(any(category == \"blood\"))

标签: r dplyr conditional-statements


【解决方案1】:

您可以查看以下链接以获取更多信息:

Using "any" operator in dplyr filter

dat2 <- dat1 %>%
  group_by(id) %>%
  filter(any(condition)) %>%
  ungroup()

【讨论】:

    【解决方案2】:

    添加一个“|” (ALT-124) 向过滤器添加显式 OR 条件。这些事情中的任何一个都将返回整行。

    dat1 %>%
      group_by(id) %>%
      filter(category=="blood" | condition2 == TRUE | condition 3 %in% c(1, 2, 3)) %>%
      ungroup()
    

    你也可以使用任何():

    dat1 %>%
      group_by(id) %>%
      filter(any(category=="blood", condition2 == TRUE, condition3 %in% c(1, 2, 3))) %>%
      ungroup()
    

    对此的补充是 & (AND) 和函数 all(),它只返回所有条件都为真的行

    【讨论】:

    • filter(condA | condB)不是等于filter(any(condA, condB)),既不等于&amp; 也不等于all()。您误解了any()all() 的用法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多