基于列计数R替换值

基于列计数R替换值,r,dataframe,for-loop,na,R,Dataframe,For Loop,Na,我试图计算一个学生在大学一学期开始时试图用多少小时来替换我的数据集中的NA值。我运行以下代码以查找缺少的值: IR_Data %>% filter(is.na(IR_Data$HRS_Sem1Attempted)) 这将生成以下数据(我仅显示前几列): ID TermCode CourseCode年级分数ugcourt性别`种族/民族`佩尔第一代 1 189 202009 284宽0 2020米白色假假 2 189 202009 235宽0 2020米白色假假 3 189 202

我试图计算一个学生在大学一学期开始时试图用多少小时来替换我的数据集中的NA值。我运行以下代码以查找缺少的值:

IR_Data %>%
    filter(is.na(IR_Data$HRS_Sem1Attempted))
这将生成以下数据(我仅显示前几列):

ID TermCode CourseCode年级分数ugcourt性别`种族/民族`佩尔第一代
1 189 202009 284宽0 2020米白色假假
2 189 202009 235宽0 2020米白色假假
3 189 202009 304宽0 2020米白色假假
4323 202009 4 B+3.33 2020 M其他/未知假-真
5323 202009 235 B+20.0 2020 M其他/未知假-真
6323 202009 159 A 12 2020 M其他/未知假-真
7 323 202009 106 A 8 2020 M其他/未知假-真
正如您所看到的,对于学生参加的每个课程,ID都会重复。对于学生189,我们可以看到他们三个班级的每一个班级都得到了“W”(意思是退学)。然而,学生323在他们的4个班级中获得了B+、B+、a和a

我想运行一行代码,用ID值的计数乘以3(课程学时)来替换HRS_Sem1Attentied中的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
尝试次数%
过滤器(is.na(IR_数据$HRS_sem1尝试))%>%
分组依据(ID)%>%
计数(ID)
尝试
这将生成此表,其中包含每个学生ID的总课程数以及当前NA值:

      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
ID n
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

使用
groupby
按ID对观察结果进行分组,然后
使用
n()*3
将每个ID组中的条目数变异为HRS Sem1尝试变量

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
dt=read.table(text=text,header=TRUE)
图书馆(dplyr)
dt%>%组由(ID)%>%突变(HRS\u Sem1Attempted=n()*3)
dt
ID术语代码课程代码等级分数性别X种族种族。每周一小时
1 189 202009 284宽0 2020米白色9
2 189 202009 235宽0 2020米白色9
3 189 202009 304宽0 2020米白色9
4323 202009 4 B+3.33 2020米其他/未知12
5323 202009 235 B+2020米其他/未知12
6323 202009 159 A 12 2020 M其他/未知12
7 323 202009 106 A 8 2020 M其他/未知12

您能否添加一些可用的数据(例如,您的工作基于示例数据中缺少的
IR\u data$HRS\u 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