使用R查找特定值的所有可能的等级对
我这里有一个问题陈述,我坚持把它作为一个整体来完成 声明如下: 假设有5个可能的等级,两个等级中的每一个都有相关的等级点 课程。假设等级为A、B、C、D和F,相关等级点为4,3,2,1 分别为0和0。对于随机选择的学生,他/她有九个可能的值 这两门课程的平均成绩(GPA)分别为(4,3.5,3,2.5,2,1.5,1,0.5,0)用于 例如,如果学生获得(A,D),(B,C),(C,B)和(D,A)成绩,则会出现值2.5。 我尽我最大的努力为GPA的值编写一个代码,作为所获得分数的函数,并找到某个值的所有可能的分数对。我无法获得所需的输出。有人可以尝试一下以获得预期的输出吗使用R查找特定值的所有可能的等级对,r,dataframe,math,tidyverse,reshape,R,Dataframe,Math,Tidyverse,Reshape,我这里有一个问题陈述,我坚持把它作为一个整体来完成 声明如下: 假设有5个可能的等级,两个等级中的每一个都有相关的等级点 课程。假设等级为A、B、C、D和F,相关等级点为4,3,2,1 分别为0和0。对于随机选择的学生,他/她有九个可能的值 这两门课程的平均成绩(GPA)分别为(4,3.5,3,2.5,2,1.5,1,0.5,0)用于 例如,如果学生获得(A,D),(B,C),(C,B)和(D,A)成绩,则会出现值2.5。 我尽我最大的努力为GPA的值编写一个代码,作为所获得分数的函数,并找到某
提前谢谢 您可以在
dplyr
包中使用一个方便的函数来解决此问题。请参阅此链接中的详细信息,包括一系列基本的工作示例:
您可以使用data.frame和函数解决此问题。 首先为所有组合和GPA创建一个数据集,然后过滤结果
library(tidyverse)
df <- data.frame(grade1 = c("A", "B", "C", "D", "F"),
grade2 = c("A", "B", "C", "D", "F")) %>%
expand.grid(.) %>%
data.frame(.) %>%
mutate(points1 = case_when(grade1 == "A" ~ 4,
grade1 == "B" ~ 3,
grade1 == "C" ~ 2,
grade1 == "D" ~ 1,
TRUE ~ 0),
points2 = case_when(grade2 == "A" ~ 4,
grade2 == "B" ~ 3,
grade2 == "C" ~ 2,
grade2 == "D" ~ 1,
TRUE ~ 0),
GPA = (points1 + points2)/2)
df %>%
filter(GPA == 2.5)
grade1 grade2 points1 points2 GPA
1 D A 1 4 2.5
2 C B 2 3 2.5
3 B C 3 2 2.5
4 A D 4 1 2.5
图书馆(tidyverse)
df%
展开。网格(%)>%
数据帧(%)>%
当(等级1==“A”~4,
一年级==“B”~3,
一年级==“C”~2,
一年级==“D”~1,
真~0),
点2=案例(等级2==“A”~4,
二年级==“B”~3,
二级==“C”~2,
二年级==“D”~1,
真~0),
GPA=(点S1+点S2)/2)
df%>%
过滤器(GPA==2.5)
1级2级积分1级积分2 GPA
1 D A 14 2.5
2 C B 2 3 2.5
3BC2.5
4 A D 4 1 2.5
或者将整个代码放在一个函数中:
find_combinations <- function(x) {
df <- data.frame(grade1 = c("A", "B", "C", "D", "F"),
grade2 = c("A", "B", "C", "D", "F")) %>%
expand.grid(.) %>%
data.frame(.) %>%
mutate(points1 = case_when(grade1 == "A" ~ 4,
grade1 == "B" ~ 3,
grade1 == "C" ~ 2,
grade1 == "D" ~ 1,
TRUE ~ 0),
points2 = case_when(grade2 == "A" ~ 4,
grade2 == "B" ~ 3,
grade2 == "C" ~ 2,
grade2 == "D" ~ 1,
TRUE ~ 0),
GPA = (points1 + points2)/2)
res <- df %>%
filter(GPA == x)
return(res = res)
}
find_combinations(3)
查找\u组合%
数据帧(%)>%
当(等级1==“A”~4,
一年级==“B”~3,
一年级==“C”~2,
一年级==“D”~1,
真~0),
点2=案例(等级2==“A”~4,
二年级==“B”~3,
二级==“C”~2,
二年级==“D”~1,
真~0),
GPA=(点S1+点S2)/2)
res%
过滤器(GPA==x)
返回(res=res)
}
查找_组合(3)