gpt4 book ai didi

R中的排名偏好匹配

转载 作者:行者123 更新时间:2023-12-04 13:36:16 25 4
gpt4 key购买 nike

我不确定如何最好地描述我的问题,但我正在处理一个调度项目。我有一个数据框,其中包含教授、类(class)和时间段以及几列,每列包含一个随机生成的数字。我想使用这些随机数来生成不同的时间表选项。

这就是我所拥有的:

  Prof     Courses   Time      Option_1  Option_2
John Course A Time 1 0.7765824 0.3102492
John Course A Time 2 0.5636233 0.4839778
John Course B Time 1 0.5814365 0.7282360
John Course B Time 2 0.2623851 0.5198096

而且,这就是我想要的:
  Prof     Courses   Time      Option_1  Option_2
John Course A Time 1 1 0
John Course A Time 2 0 1
John Course B Time 1 0 1
John Course B Time 2 1 0

对于选项 1,0.7765824 是最高数字,因此将其更改为 1 - 这意味着将在该时间段内教授类(class)。下一个最高数字 - 对于未安排的类(class)且时间段已满 - 是 0.2623851,因此将其更改为 1。

对于选项 2,0.7282360 是最大数字,因此它更改为 1。然后,0.4839778 更改为 1,因为它是未安排类(class)和未填充时间段的最大数字。

实际数据涉及教授不同数量类(class)的数百名教授和数百个选项,因此解决方案需要能够使用 group_by() 函数(或类似的东西),并且足够灵活以解释教授不同数量类(class)的教授。

有任何想法吗?

最佳答案

这个循环应该在每个选项的基础上处理它,df不过确实会以新的顺序返回。

df <- df[order(df$Option_1,decreasing =T),]
coursesdone <- c("FakeCourse")
timedone <- c("FakeTime")
for(i in 1:length(unique(df$Courses))){
available <- df$Courses != coursesdone & df$Time != timedone
df$Option_1[available][1] = 1
df$Option_1[df$Courses == df$Courses[available][1] & df$Time != df$Time[available][1]] <- 0
coursesdone[i] <- as.character(df$Courses[available][1])
timedone[i] <- as.character(df$Time[available][1])
}

但是我们可以为您拥有的许多选项堆叠循环
df <- df[order(df$Option_2,decreasing =T),]
coursesdone <- c("FakeCourse")
timedone <- c("FakeTime")
for(i in 1:length(unique(df$Courses))){
available <- df$Courses != coursesdone & df$Time != timedone
df$Option_2[available][1] = 1
df$Option_2[df$Courses == df$Courses[available][1] & df$Time != df$Time[available][1]] <- 0
coursesdone[i] <- as.character(df$Courses[available][1])
timedone[i] <- as.character(df$Time[available][1])
}

获得最终输出(一旦两个循环都已执行)
> df 
Prof Courses Time Option_1 Option_2
3 John CourseB Time1 0 1
4 John CourseB Time2 1 0
2 John CourseA Time2 0 1
1 John CourseA Time1 1 0

关于R中的排名偏好匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61797776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com