Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列随机分配给R中的其他列_R - Fatal编程技术网

将列随机分配给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名学生吗?非常感谢!另一个问题是,如果其中一个学生退课,我如何更改函数,以便在任何数量的学生退课时仍然有效?还有,我如何将评判结果存储到数据框中?再次感谢!