Я начинающий пользователь R, и я написал код, который, я считаю, может быть сокращен с помощью цикла for. Проблема в том, что я не могу понять, как написать цикл.
У меня есть фрейм данных со столбцом «TestGrade» со значениями, такими как «1 класс» или «Детский сад». Я пытаюсь изменить этот столбец, чтобы быть только числовым значением. Например, «Детский сад» будет изменен на 0, а «Класс 1» будет изменен на 1. Я предоставлю код ниже примера кадра данных, а также, как я решил проблему без цикла.
Любое руководство будет с благодарностью!
##Sample Data
FirstInitial <- c("A", "D", "M", "C", "J", "S", "K", "L", "M", "K", "G", "B", "F")
LastInitial <- c("S", "M", "T", "M", "A", "B", "H", "M", "S", "W", "L", "Z", "P")
TestGrade <- c('Kindergarten', 'Grade 1','Grade 2', 'Grade 3','Grade 4', 'Grade 5', 'Grade 6','Grade 7','Grade 8', 'Grade 9', 'Grade 10', 'Grade 11','Grade 12')
df <- data.frame(FirstInitial, LastInitial, TestGrade)
##The codes current function
if(any(df$TestGrade == 'Kindergarten')){
df$TestGrade <- gsub('Kindergarten', '0', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 1')){
df$TestGrade <- gsub('Grade 1', '1', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 2')){
df$TestGrade <- gsub('Grade 2', '2', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 3')){
df$TestGrade <- gsub('Grade 3', '3', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 4')){
df$TestGrade <- gsub('Grade 4', '4', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 5')){
df$TestGrade <- gsub('Grade 5', '5', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 6')){
df$TestGrade <- gsub('Grade 6', '6', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 7')){
df$TestGrade <- gsub('Grade 7', '7', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 8')){
df$TestGrade <- gsub('Grade 8', '8', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 9')){
df$TestGrade <- gsub('Grade 9', '9', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 10')){
df$TestGrade <- gsub('Grade 10', '10', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 11')){
df$TestGrade <- gsub('Grade 11', '11', df$TestGrade)
}
if(any(df$TestGrade == 'Grade 12')){
df$TestGrade <- gsub('Grade 12', '12', df$TestGrade)
}