我有一个30x2的数据框(df),其中一列包含了30个人的姓名,第二列包含他们的ID号码。
我想在R中创建一个函数,该函数可以随机并尽可能平均地将这30个人分成多组,并且可以处理有余数和无余数的情况。
为了澄清,这个函数应该: • 以2个参数作为参数:df和代表组数的整数 • 给我返回原始的df,但是增加了一个额外的列,该列包含每个人被随机分配到的组号 • 如果人数(行数)不能被给定的整数整除,则剩余的行应尽可能平均地分配到各个组中
例如: • 如果我想把30个人分成1组,我的函数应该返回一个新的列“group_no”,其中每个人都有1个(每个人都被分配到同一组)
• 如果我想要4个组,我希望看到10个人被分配到2个组,剩下的5个人被分配到另外2个组。
• 如果我想要8个组,那么函数应该给我6个由4个人组成的组和2个由3个人组成的组等等。
我已经编写了一些代码,它可以做到我所需的,但我只是手动输入组别,所以不知道它有多随机或正确...我想编写一个函数,可以自动执行这些任务。
为了澄清,这个函数应该: • 以2个参数作为参数:df和代表组数的整数 • 给我返回原始的df,但是增加了一个额外的列,该列包含每个人被随机分配到的组号 • 如果人数(行数)不能被给定的整数整除,则剩余的行应尽可能平均地分配到各个组中
例如: • 如果我想把30个人分成1组,我的函数应该返回一个新的列“group_no”,其中每个人都有1个(每个人都被分配到同一组)
• 如果我想要4个组,我希望看到10个人被分配到2个组,剩下的5个人被分配到另外2个组。
• 如果我想要8个组,那么函数应该给我6个由4个人组成的组和2个由3个人组成的组等等。
我已经编写了一些代码,它可以做到我所需的,但我只是手动输入组别,所以不知道它有多随机或正确...我想编写一个函数,可以自动执行这些任务。
#My code so far
#For 1 group of 30 people
people=1:30
groups=1
df$group_no <- print(sample(groups))
#For 4 groups (2 groups of 10 people and 2 groups of 5 people)
groups=c(rep(1,5), rep(2,5), rep(3,10), rep(4,10))
df$group_no <- print(sample(groups))
#For 7 groups (3 groups of 6 people and 4 groups of 3 people)
groups=c(rep(1,6), rep(2,6), rep(3,6), rep(4,3), rep(5,3), rep(6,3), rep(7,3))
df$group_no <- print(sample(groups))
#For 8 groups (6 groups of 4 people and 2 groups of 3 people)
groups=c(rep(1,4), rep(2,4), rep(3,4), rep(4,4), rep(5,4), rep(6,4), rep(7,3), rep(8,3))
df$group_no <- print(sample(groups))
#For 10 groups of 3 people each
groups=c(rep(1,3), rep(2,3), rep(3,3), rep(4,3), rep(5,3), rep(6,3), rep(7,3), rep(8,3), rep(9,3), rep(10,3))
df$group_no <- print(sample(groups))
fct_grouping <- function(df, nr_groups) {
?????
}