r - 根据不同的条件过滤不同的变量

标签 r tidyverse purrr

我有一个深层嵌套数据和一个通过 purrr 在其上运行的函数。这是类似于我的案例的模拟数据和分析:

df <- tibble::tribble(
     ~A, ~B, ~C,
    "e", 2L, 6L,
    "e", 5L, 8L,
    "e", 5L, 3L,
    "f", 3L, 8L,
    "f", 4L, 1L,
    "f", 5L, 6L,
    "g", 3L, 9L,
    "g", 4L, 2L,
    "g", 5L, 7L,
    "h", 5L, 4L
    )

我需要根据不同的条件过滤不同的变量。我需要做这样的事情:

df1 <- df %>% group_by(A) %>% 
              nest() %>% 
              case_when(A == "e" ~filter(B<4),
              A == "f" ~filter(C<=6),
              A == "g" ~filter(B<5, C<7))

我想要的输出应该是:

desired_output <- tibble::tribble(
                     ~A, ~B, ~C,
                    "e", 2L, 6L,
                    "f", 4L, 1L,
                    "f", 5L, 6L,
                    "g", 4L, 2L
                    )

最佳答案

我们可以针对不同的条件进行如下过滤。

library(tidyverse)

df %>%
  filter((A %in% "e" & B < 4)  | 
           (A %in% "f" & C <= 6) |
           (A %in% "g" & B < 5 & C < 7))  
# # A tibble: 4 x 3
#   A         B     C
#   <chr> <int> <int>
# 1 e         2     6
# 2 f         4     1
# 3 f         5     6
# 4 g         4     2

关于r - 根据不同的条件过滤不同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121305/

相关文章:

在tidyverse中按组滚动回归?

r - 选择包含 R 中每日最大值的行

r - 情节顶部的主标题被切断

r - Tidyverse 命令已弃用 : T test inside a summarise , 然后报告所有结果

read_excel 不会修剪空格

r - 传递给 map() 的列的访问名称

r - 使用 ggplot2 对条形图中的条进行排序

r - 使用 R 中的 tsibble、寓言拟合平均预测模型

r - 生成引用现有变量的动态变量

r - 根据存储在 data.frame 中的单独字符向量,有条件地重命名列表中的列