У меня есть датафрейм, который включает в себя оценки студентов за курс. Эти оценки, однако, представлены в формате A-F и должны быть преобразованы в числовые оценки (10-1). Для этого я сгенерировал случайные числа, которые представляют эти значения A-F.
A <- rnorm(nrow(Student_Data), 9.45, 0.2)
B <- rnorm(nrow(Student_Data), 7.95, 0.2)
C <- rnorm(nrow(Student_Data), 6.25, 0.2)
D <- rnorm(nrow(Student_Data), 4.75, 0.2)
F <- rnorm(nrow(Student_Data), 2, 0.2)
Я также создал функцию, которая позволяет заменять буквы цифрами
courseGradesNumeric <- data.frame(lapply(courseGrades, function(x) {gsub("A", sample(A, 1), gsub("B", sample(B, 1), gsub("C", sample(C, 1), gsub("D", sample(D, 1), gsub("F", sample(F, 1), x)))))}))
Это работает довольно хорошо, но проблема в том, что если в столбце есть "A"
(или любая другая буква), то этот A в этом конкретном столбце заменяется случайным числом из vector A
, которое совпадает с по всей колонке.
Для иллюстрации:
Текущий фрейм данных (пока игнорируем NA)
Student_ID ABC1000_Grade ABC1003_Grade
1 9000006 A B
2 9000014 A A
3 9000028 B C
4 9000045 <NA> <NA>
5 9000080 C <NA>
6 9000091 <NA> <NA>
Проблема:
Student_ID ABC1000_Grade ABC1003_Grade
1 9000006 9.335523 8.231295
2 9000014 9.335523 9.462468
3 9000028 7.972959 6.394259
4 9000045 <NA> <NA>
5 9000080 6.257297 <NA>
6 9000091 <NA> <NA>
В столбце ABC1000_Grade символ A был заменен тем же случайным числом, которое было сгенерировано на предыдущем шаге.
Как я могу убедиться, что все замененные значения являются разными случайными числами? Таким образом, предпочтительный результат должен быть:
Student_ID ABC1000_Grade ABC1003_Grade
1 9000006 9.510445 8.231295
2 9000014 9.335523 9.462468
3 9000028 7.972959 6.394259
4 9000045 <NA> <NA>
5 9000080 6.257297 <NA>
6 9000091 <NA> <NA>