根据列数替换值 R

Replace values based on column counts R

我正在尝试计算学生在大学学期开始时尝试替换我的数据集中的 NA 值的小时数。我运行下面的代码来查找缺失值:

IR_Data %>%
    filter(is.na(IR_Data$HRS_Sem1Attempted))

生成以下数据(我只显示前几列):

      ID TermCode CourseCode Grade GradePoints UGCohort Gender `Race/Ethnicity` Pell  FirstGen
   <dbl>    <dbl>      <dbl> <chr>       <dbl> <chr>    <chr>  <chr>            <lgl> <lgl>   
 1   189   202009        284 W            0    2020     M      White            FALSE FALSE   
 2   189   202009        235 W            0    2020     M      White            FALSE FALSE   
 3   189   202009        304 W            0    2020     M      White            FALSE FALSE   
 4   323   202009          4 B+           3.33 2020     M      Other/Unknown    FALSE TRUE    
 5   323   202009        235 B+          20.0  2020     M      Other/Unknown    FALSE TRUE    
 6   323   202009        159 A           12    2020     M      Other/Unknown    FALSE TRUE    
 7   323   202009        106 A            8    2020     M      Other/Unknown    FALSE TRUE 

如您所见,对于每个 class 学生,ID 都会重复。对于学生 189 的情况,我们可以看到他们的三个 classes 中的每一个都收到了“W”(意思是退出)。然而,学生 323 的 4 classes.

获得了 B+、B+、A 和 A。

我想要 运行 一行代码,用 ID 值乘以三(课程时数)的计数替换 HRS_Sem1Attempted 中的 NA 值。换句话说,学生 323 会显示 4 * 3 = 12 总尝试小时数,而像学生 189 这样的人会显示 3 * 3 = 9 总尝试小时数。

我写这个是为了按 NA 值过滤并按 ID 分组:

attempts <- IR_Data %>%
              filter(is.na(IR_Data$HRS_Sem1Attempted)) %>%
              group_by(ID) %>%
              count(ID)
attempts

对于具有当前 NA 值的每个学生 ID 采取的总 classes 产生此 table:

      ID     n
   <dbl> <int>
 1   189     3
 2   323     4
 3   638     3
 4   827     4
 5   895     4
 6   909     3
 7  1006     5
 8  1292     5
 9  1490     5
10  1515     3
11  1536     4
12  1720     7
13  1825     3
14  1846     4
15  2233     4
16  2292     3

在这一点上,我真的不确定如何用这个计算有效地替换 NA 值。非常感谢任何帮助!r

使用 group_by 按 ID 对观察结果进行分组,然后使用 n()*3.[=14 mutate 每个 ID 组中的条目数进入 HRS_Sem1Attempted 变量=]

dt=read.table(text=text, header=TRUE)
library(dplyr)
dt %>% group_by(ID) %>% mutate(HRS_Sem1Attempted=n()*3)
dt

     ID TermCode CourseCode Grade GradePoints UGCohort Gender X.Race.Ethnicity. HRS_Sem1Attempted
  <int>    <int>      <int> <fct>       <dbl>    <int> <fct>  <fct>                         <dbl>
1   189   202009        284 W            0        2020 M      White                             9
2   189   202009        235 W            0        2020 M      White                             9
3   189   202009        304 W            0        2020 M      White                             9
4   323   202009          4 B+           3.33     2020 M      Other/Unknown                    12
5   323   202009        235 B+          20        2020 M      Other/Unknown                    12
6   323   202009        159 A           12        2020 M      Other/Unknown                    12
7   323   202009        106 A            8        2020 M      Other/Unknown                    12