根据列数替换值 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
我正在尝试计算学生在大学学期开始时尝试替换我的数据集中的 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