Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
随机分配教师到dplyr或类似的学校?_R_Dplyr - Fatal编程技术网

随机分配教师到dplyr或类似的学校?

随机分配教师到dplyr或类似的学校?,r,dplyr,R,Dplyr,假设我有一个包含8所学校及其特征的数据框架,另一个包含48名教师及其特征。我可以用以下代码生成一些假数据: library(dplyr) library(geosphere) set.seed(6232015) n.schools <-8 n.teachers <- 48 makeRandomString <- function(pre, n=1, length=12) { randomString <- c(1:n) # in

假设我有一个包含8所学校及其特征的数据框架,另一个包含48名教师及其特征。我可以用以下代码生成一些假数据:

library(dplyr)
library(geosphere)
set.seed(6232015)
n.schools <-8
n.teachers <- 48

  makeRandomString <- function(pre, n=1, length=12) {
  randomString <- c(1:n)                  # initialize vector
  for (i in 1:n) {
    randomString[i] <- paste0(pre,'.', paste(sample(c(0:9, letters, LETTERS),
                                                    length, replace=TRUE),
                                             collapse="")) 
  }
  return(randomString)
}

gen.teachers <- function(n.teachers){
  Teacher.ID <- makeRandomString(pre= 'T', n = n.teachers, length = 20)
  Teacher.exp <- runif(n = n.teachers, min = 1, max = 30)
  Teacher.Other <- sample(c(0,1), replace = T, prob = c(0.5, 0.5), size = n.teachers)
  Teachers <- data.frame(Teacher.ID, Teacher.exp, Teacher.Other)
  return(Teachers)
}



gen.schools <- function(n.schools){
  School.ID <- makeRandomString(pre= 'S', n = n.schools, length = 20)
  School.lat <- runif(n = n.schools, min = -2, max = 2)
  School.long <- runif(n = n.schools, min = -2, max = 2)
  Schools <- data.frame(School.ID, School.lat, School.long) %>% 
    rowwise() %>%  mutate (School.distance = distHaversine(p1 = c(School.long, School.lat),
                                                           p2 = c(0, 0), r = 3961))
  return(Schools)
}

Teachers <- gen.teachers(n.teachers = n.teachers)
Schools <- gen.schools(n.schools = n.schools)
要获得一个6位老师的名单,将他们分配到一所学校,请将他们从我的原始池中移除,并继续循环。我的猜测/希望是有一种更简单的方法来做到这一点


谢谢你的帮助

在代码的上下文中

sample(rep(Schools$School.ID, each = 6))

给出每个school.id出现6次的学校的随机序列。将教师$AssignedSchool设置为此示例,每个教师在代码上下文中都有一个指定的学校

sample(rep(Schools$School.ID, each = 6))

给出每个school.id出现6次的学校的随机序列。将教师$AssignedSchool设置为此示例,每个教师在代码上下文中都有一个指定的学校

sample(rep(Schools$School.ID, each = 6))

给出每个school.id出现6次的学校的随机序列。将教师$AssignedSchool设置为此示例,每个教师在代码上下文中都有一个指定的学校

sample(rep(Schools$School.ID, each = 6))

给出每个school.id出现6次的学校的随机序列。将教师$AssignedSchool设置为此样本,每位教师都有一个分配的学校(教师,样本(代表学校$school.ID,每个=6))
拆分(教师,样本(代表学校$school.ID,每个=6))
拆分(教师,样本(代表学校$school.ID,每个=6))
拆分(教师,样本(代表(Schools$School.ID,each=6))
如果出现错误,请注意单词“length”中的拼写错误重复了几次。@Christopher修复了,谢谢!如果出现错误,请注意单词“length”中的拼写错误重复了几次。@Christopher修复了,谢谢!如果出现错误,请注意单词“length”中的拼写错误重复几次。@Christopher已修复,谢谢!如果您遇到错误,请注意“长度”一词中的一个拼写错误重复了几次。@Christopher已修复,谢谢!