У меня созданы оценки 15 учеников по 5 предметам.Я также создал вектор паролей в каждой теме.Я хочу изменить каждый столбец меток с помощью Pass или Fail в зависимости от значений, заданных в векторных паролях ... Я смог вручную, но я хочу использовать некоторую функцию зацикливания, чтобы она отображала метки в столбцах, а затем мутироваласоздайте новый столбец или новый фрейм данных с помощью Pass или Fail.
создайте вектор-образец с 15 позициями
x <- runif(15)
#convert to DF
marks <- as.data.frame(x)
marks[1:5] <- sapply(1:5, "+", rnorm(5,60,15))
names(marks) <- paste0("sub", 1:5)
marks
colMeans(marks)
lapply(marks, range)
lapply(marks, is.na)
colSums(is.na(marks))
marks1 = round(marks,2)
passmarks = c(60, 65, 62,70, 45)
names(marks1)
marks1 %>% mutate(sub1a = ifelse(sub1 <= passmarks[1], 'F','P'), sub2a = ifelse(sub2 <= passmarks[2], 'F','P'), sub3a = ifelse(sub3 <= passmarks[3], 'F','P'), sub4a = ifelse(sub4 <= passmarks[4], 'F','P'), sub5a = ifelse(sub5 <= passmarks[5], 'F','P'))
marks1 %>% summarise_at(vars(sub1:sub5), mean, na.rm=T)
marks1 %>% mutate_all(funs(./75))
Часть II проблемы :::: Эта стадияпроблема была решена.Я должен рассчитать SGPA для каждого студента.Если у меня есть оценки, я назначаю оценки каждому предмету студентов.Это зависит от среднего значения каждого субъекта и стандартного отклонения определенной последовательности.Эта оценка зависит от среднего значения каждого столбца оценок и стандартного значения, которые одинаковы для всех столбцов.Затем, если у нас есть оценки, мы должны рассчитать общее количество полученных баллов.Для каждого предметного столбца есть кредитные очки, которые известны.Также известен балл по каждому классу.Я хочу рассчитать числовую сумму кредитных баллов для каждого учащегося ... Я пытался закодировать некоторую его часть ... Я хотел бы попросить вашей помощи, чтобы сделать ее проще и элегантнее ...
#continued
#find mean of each subject
(meanx = colMeans(marks1))
#(sdx=apply(marks1,2,sd))
(sd1 = seq(1.5, -2,-.5)) #this pattern is same across all subjects
#these are the grades associated with each Std Dev
(names(sd1) = c('AP','A','AM','BP','B','BM','CP','C'))
sd1
sd1['AP'] #test for A+
#this is sample vectorise function created: here meanx should be replace with respective mean of the subject
RgradeAssigned = function(x) { ifelse(x >= meanx * sd1['AP'],'AP', ifelse(x >= meanx + sd1['A'], 'A', ifelse(x >= meanx + sd1['AM'], 'AM', ifelse(x >= meanx + sd1['BP'], 'BP', ifelse(x >= meanx * sd1['B'], 'B',ifelse(x >= meanx + sd1['BM'], 'BM',ifelse(x >= meanx + sd1['CP'], 'CP',ifelse(x >= meanx + sd1['C'], 'C', 'F'))))))))}
RgradeAssigned(marks1)
#meanx should mean from the vector meanx : for sub1 it should be meanx[1]
meanx
#Calculate SGPA
#credit for each subject
(subcredits = c(3,2,4,3,3))
#gradepoints with wrt to each grade
gradeName = c('AP','A','AM','BP','B','BM','CP','C','F')
gradePoint = c(10,9,8,7,6,5,4,3,0)
names(gradePoint) = gradeName
gradePoint
# if a particular grade, find grade point -> multiply by subject credit -> for each student -> find sum of grades ie sum each row
# for eg row grade were
#'AP','A','AM','BP','B' -> 10,9,8,7,6 -> 10*3 + 9*2+ 8*4 + 7*3 + 6*3
#subject credits : 3,2,4,3,3
#Now Mapping of Grade to Point is available