如何将给定数据帧的子集分成3组,每组包含R中的5行

如何将给定数据帧的子集分成3组,每组包含R中的5行,r,R,我有一个R数据框,包含45行5列。它有三组,分别为“第一组”、“第二组”、“第三组”。每个组包含相同的15个观察值(注:这是15个位置ID和属性以及组ID之间的结果组合) 我需要将这个数据帧中所有可能的行的组合放入15行的子集中,这样每个组都包含5行,这5行在组内和组间都是唯一的 假设您的数据集是df此解决方案仅保留15行不同的行,然后根据它们的行号为它们分配一个组ID值: library(dplyr) df %>% select(-Group_ID) %>% distin

我有一个R数据框,包含45行5列。它有三组,分别为“第一组”、“第二组”、“第三组”。每个组包含相同的15个观察值(注:这是15个位置ID和属性以及组ID之间的结果组合)


我需要将这个数据帧中所有可能的行的组合放入15行的子集中,这样每个组都包含5行,这5行在组内和组间都是唯一的

假设您的数据集是
df
此解决方案仅保留15行
不同的
行,然后根据它们的行号为它们分配一个
组ID
值:

library(dplyr)

df %>%
  select(-Group_ID) %>%
  distinct() %>%
  mutate(Group_ID = case_when(row_number() <= 5 ~ "Group1",
                              between(row_number(), 6, 10) ~ "Group2",
                              row_number() >= 11 ~ "Group3"))

#    Location_ID Population Orders num_schools Group_ID
# 1            1     718866   4163         613   Group1
# 2            2     905600   4673         790   Group1
# 3            3     319276   4892         214   Group1
# 4            4     378980   3916         535   Group1
# 5            5     598938   4395         655   Group1
# 6            6     677865   4753         460   Group2
# 7            7     716822   3234         894   Group2
# 8            8     525005   2040         309   Group2
# 9            9     528621   2865         796   Group2
# 10          10     577955   4856         613   Group2
# 11          11     604970   2199         704   Group3
# 12          12     521017   2510         939   Group3
# 13          13     613552   2050         551   Group3
# 14          14     126465   3933         746   Group3
# 15          15     197608   2121         674   Group3

欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助你
library(dplyr)

df %>%
  select(-Group_ID) %>%
  distinct() %>%
  mutate(Group_ID = case_when(row_number() <= 5 ~ "Group1",
                              between(row_number(), 6, 10) ~ "Group2",
                              row_number() >= 11 ~ "Group3"))

#    Location_ID Population Orders num_schools Group_ID
# 1            1     718866   4163         613   Group1
# 2            2     905600   4673         790   Group1
# 3            3     319276   4892         214   Group1
# 4            4     378980   3916         535   Group1
# 5            5     598938   4395         655   Group1
# 6            6     677865   4753         460   Group2
# 7            7     716822   3234         894   Group2
# 8            8     525005   2040         309   Group2
# 9            9     528621   2865         796   Group2
# 10          10     577955   4856         613   Group2
# 11          11     604970   2199         704   Group3
# 12          12     521017   2510         939   Group3
# 13          13     613552   2050         551   Group3
# 14          14     126465   3933         746   Group3
# 15          15     197608   2121         674   Group3
df %>%
  select(-Group_ID) %>%
  distinct() %>%
  sample_frac(1) %>%
  mutate(Group_ID = case_when(row_number() <= 5 ~ "Group1",
                              between(row_number(), 6, 10) ~ "Group2",
                              row_number() >= 11 ~ "Group3"))