如何拆分R Dataframe ,使每个块包含特定因子列的每个唯一值,并且每行都包含在块中?

toe95027  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(100)

假设我有一个 Dataframe ,如以下代码所创建的 Dataframe :

library(dplyr)
library(stringr)

letters_comb <- expand.grid(LETTERS, LETTERS) %>% 
  mutate(Combination = paste0(Var1, Var2)) %>% 
  select(Combination) %>% 
  sample_n(100)

set.seed(123) 
n_times <- round(runif(100, 80, 120)) 

df <- data.frame(fac_var = as.factor(rep(letters_comb$Combination, times = n_times)))

如何将df拆分为最大数量的块,使得每个块包含fac_var的每个唯一值,并且每行都包含在块中?使用dplyr(或其他tidyverse封装)的解决方案特别受欢迎。

nvbavucw

nvbavucw1#

您可以使用dplyr包中的group_split()函数。

library(dplyr)

df_chunks <- df %>%
  group_by(fac_var) %>%
  group_split()

group_by(fac_var)通过fac_var列对 Dataframe 进行分组,group_split()根据分组将dataframe拆分为chunks。每个块将包含对应于唯一值fac_var的所有行。

相关问题