Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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_Dataframe_Math_Tidyverse_Reshape - Fatal编程技术网

使用R查找特定值的所有可能的等级对

使用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的值编写一个代码,作为所获得分数的函数,并找到某

我这里有一个问题陈述,我坚持把它作为一个整体来完成

声明如下:

假设有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)