首页 > 解决方案 > 使用 dplyr 按特定组中的变量拆分

问题描述

如何使用拆分和复制数据框dplyr?想象一下,我有一个包含分组变量(即group)、样本 id(即sample)和值的数据框。

library(tidyverse)

df <- tibble(group = c(rep(LETTERS[1:3], 3), "mix", "mix"),
       sample = paste0("sample", seq(1, 11)),
       value = rnorm(11, 20, sd = 30))

我需要通过混合组和来自该组的样本将此数据帧拆分为另外两个数据帧。第一组将是没有sample11行的所有数据框,第二组 - 没有sample10行。像这样但更现代的方式。我相信有一个功能)

list(
  df1 = df %>% filter(sample != "sample10"),
  df2 = df %>% filter(sample != "sample11")
)

我需要对数十个目标样本进行此操作,然后为每个 df 映射一个函数。

标签: rdplyrtidyverse

解决方案


试试这个

lapply(which(df$group == "mix"), function(x) df[-x, ])

到管道形式

df %>%
  { which(.$group == "mix") } %>%
  map(~ df[-., ])

推荐阅读