如何使用拆分和复制数据框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映射一个函数。
要对所有样本标签重复过滤,我将采用唯一的样本值,并沿其映射,然后过滤以排除每个样本值。
library(dplyr)
df_list <- unique(df$sample) %>%
purrr::map(~filter(df, sample != .))
df_list[1]
#> [[1]]
#> # A tibble: 10 x 3
#> group sample value
#> <chr> <chr> <dbl>
#> 1 B sample2 -7.49
#> 2 C sample3 34.1
#> 3 A sample4 61.4
#> 4 B sample5 51.9
#> 5 C sample6 15.7
#> 6 A sample7 -20.6
#> 7 B sample8 39.8
#> 8 C sample9 47.6
#> 9 mix sample10 37.3
#> 10 mix sample11 14.4
更好的是,命名数据框以显示排除了哪个样本:
df_list_named <- unique(df$sample) %>%
purrr::set_names(paste, "excluded", sep = "_") %>%
purrr::map(~filter(df, sample != .))
df_list_named[1]
#> $sample1_excluded
#> # A tibble: 10 x 3
#> group sample value
#> <chr> <chr> <dbl>
#> 1 B sample2 -7.49
#> 2 C sample3 34.1
#> 3 A sample4 61.4
#> 4 B sample5 51.9
#> 5 C sample6 15.7
#> 6 A sample7 -20.6
#> 7 B sample8 39.8
#> 8 C sample9 47.6
#> 9 mix sample10 37.3
#> 10 mix sample11 14.4
从那里,调用另一个map
或任何其他应用更多功能的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句