将列随机分配给R中的其他列
我有一列学生姓名和一列学生组号。我怎么能随机分配每个学生作为另一组作品的评判员,有人能告诉我如何构建函数来解决这个问题吗?他们不能成为自己群体的评判者将列随机分配给R中的其他列,r,R,我有一列学生姓名和一列学生组号。我怎么能随机分配每个学生作为另一组作品的评判员,有人能告诉我如何构建函数来解决这个问题吗?他们不能成为自己群体的评判者 Bob Ross 1 Kanye West 1 Chris Evans 1 Robert Jr 1 Bruce Wayne 2 Peter Parker 2 Steven Strange 2 Danny rand 2 Daniel Fisher 2 Rob Son 3 Son Bob 3 Chun Li 3 Ching D
Bob Ross 1
Kanye West 1
Chris Evans 1
Robert Jr 1
Bruce Wayne 2
Peter Parker 2
Steven Strange 2
Danny rand 2
Daniel Fisher 2
Rob Son 3
Son Bob 3
Chun Li 3
Ching Do 3
Ping Pong 3
Michael Jackson 4
Rich Brian 4
Ryan Gosling 4
Nathan Nguyen 4
Justin Bieber 4
这里有一种方法,使用
tidyverse
方法。基本上就是说,对于组
中的每个值(map\u int
),从非当前组中抽取一个样本
库(tidyverse)
df%
变异(
to_judge=map_int(
.x=组,
.f=~sample(
x=唯一(组)[唯一(组)!=0.x],
尺寸=1
)
)
)
#>#tibble:18 x 3
#>要判断的名称组
#>
#>1 Kanye West 14
#>2克里斯·埃文斯12
#>3小罗伯特1 3
#>布鲁斯·韦恩21
#>5彼得·帕克23
#>6.2.3
#>7 Danny rand 2 4
#>8丹尼尔·费舍尔2 1
#>9罗布儿子3 1
#>10儿子鲍勃3 2
#>11春丽3 4
#>12清道3 4
#>13乒乓球3 4
#>14迈克尔·杰克逊4 2
#>15 Rich Brian 4 3
#>16 Ryan Gosling 4 1
#>17 Nathan Nguyen 4 2
#>18贾斯汀·比伯4 1
由(v0.2.0)于2018-09-20创建。另一个使用tidyverse
的选项是通过group
列对U进行分组,使用setdiff
定义样本向量,并绘制一个组大小的样本:
df <- data.frame(Student = LETTERS[1:20],
Group = gl(4, 5))
library(tidyverse)
df %>%
group_by(Group) %>%
mutate(Judge = sample(setdiff(unique(df$Group), Group), n(), replace = T))
# A tibble: 20 x 3
# Groups: Group [4]
Student Group Judge
<fct> <fct> <chr>
1 A 1 4
2 B 1 2
3 C 1 3
4 D 1 3
5 E 1 4
6 F 2 4
7 G 2 4
8 H 2 1
9 I 2 1
10 J 2 4
11 K 3 4
12 L 3 2
13 M 3 1
14 N 3 2
15 O 3 2
16 P 4 2
17 Q 4 1
18 R 4 2
19 S 4 1
20 T 4 3
df%
分组依据(分组)%>%
变异(Judge=sample(setdiff(唯一(df$Group),Group),n(),replace=T))
#一个tibble:20x3
#分组:分组[4]
学生组裁判
1A 14
2b12
3 C 1 3
4 D 1 3
5 E 1 4
6 F 2 4
7 G 2 4
8H21
9 I 2 1
10 J 2 4
11 K 3 4
12 L 3 2
13米3 1
14 N 3 2
15O32
16 P 4 2
17问题4 1
18 R 4 2
19 S 4 1
20T43
是否每个学生都有一个小组来评判?(所以小组有多个评委?)每个小组需要相同数量的评委吗?是的,所有学生都有一个小组来评判,每个学生恰好在一个小组中。每组不需要有相同数量的评委。如果这样更容易的话,可以假设也有20名学生吗?非常感谢!另一个问题是,如果其中一个学生退课,我如何更改函数,以便在任何数量的学生退课时仍然有效?还有,我如何将评判结果存储到数据框中?再次感谢!