【发布时间】:2021-06-08 18:28:10
【问题描述】:
我正在尝试计算一个学生在大学学期开始时尝试替换我数据集中的 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
如您所见,对于学生上的每一门课,ID 都会重复。对于学生 189 的案例,我们可以看到他们在三个班级中的每个班级都获得了“W”(意为退学)。然而,学生 323 的 4 个班级分别获得了 B+、B+、A 和 A。
我想运行一行代码,将 HRS_Sem1Attempted 中的 NA 值替换为 ID 值乘以三的计数(对于课程小时数)。换句话说,学生 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
它为每个学生 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
在这一点上,我真的不确定如何用这个计算有效地替换 NA 值。非常感谢任何帮助!r
【问题讨论】:
-
您能否添加一些有用的数据(例如,您的工作基于您的示例数据中缺少的
IR_Data$HRS_Sem1Attempted,并且可能存在无用的列)以及给定上述数据的明确输出示例?