【发布时间】:2021-12-09 13:04:32
【问题描述】:
我想知道如何在下面循环我的代码以使其对其他数据更具功能性和通用性(当前数据只是一个玩具):
FIRST,我使用sample() 从data 中选择一个study,然后在filter() 的行中选择outcome == outcome_to_remove。这给出了datat 的输出。
SECOND,我使用sample()从datat中选择一个study,然后filter()其中的outcome == outcome_to_remove2的行。这给出了最终输出。
我们可以循环这个过程吗?
编辑: 我想添加到我的代码中的唯一条件是循环前后的length(unique(data$study)) 应该始终保持不变。也就是说,study 不可能在 FIRST 步骤中丢失其 outcome == "A",在 SECOND 步骤中丢失 outcome == "B",因此整个研究将被删除。
(data <- expand_grid(study = 1:5, group = 1:2, outcome = c("A", "B")))
n = 1
#====-------------------- FIRST:
studies_to_remove = sample(unique(data$study), size = n)
outcome_to_remove = c("A")
datat <- data %>%
filter(
!( study %in% studies_to_remove &
outcome %in% outcome_to_remove
))
#====------------------- SECOND:
studies_to_remove2 = sample(unique(datat$study), size = n)
outcome_to_remove2 = c("B")
datat %>%
filter(
!( study %in% studies_to_remove2 &
outcome %in% outcome_to_remove2
))
【问题讨论】:
标签: r dataframe function loops purrr