Сравнение фреймов данных с циклами for
Извините, если это основной вопрос. Я везде искал помощи и не могу найти ответ. В основном у меня есть два фрейма данных, один из них - "Ключ ответа", ответы на который начинаются в столбце 3.
и фрейм основных данных с ответами пятидесяти студентов.
Идентификатор студента находится в первом столбце, а ответы начинаются в третьем столбце.
Как мне создать цикл for для возврата вектора или фрейма данных со значениями ИСТИНА или ЛОЖЬ, если они правильно или неправильно поняли вопрос? Спасибо вам за помощь! Это поставило меня в тупик на неделю
2 ответа
Если вы действительно хотите использовать циклы в R:
all_results <- NULL
for (i in 1:nrow(results)){
answer <- cbind(results[i,1], key[3:ncol(key)] == results[i,3:ncol(results)])
all_results <- rbind(all_results, answer)
}
Это должно дать вам таблицу с идентификатором студента в первом столбце и тем, были ли их ответы верными или ложными для каждого вопроса.
Рассмотрите возможность транспонирования данных и сравнения столбцов. Небольшой пример использования data.table:
library(data.table)
set.seed(420666)
temp <- data.table("ASD" = sample(letters), "student1" = sample(letters), "student2" = sample(letters))
temp[1:5, student2 := ASD]
temp[, .SD == ASD, .SDcols = c("student1", "student2")]
student1 student2
[1,] FALSE TRUE
[2,] FALSE TRUE
[3,] FALSE TRUE
[4,] FALSE TRUE
[5,] FALSE TRUE
[6,] FALSE FALSE
[7,] FALSE FALSE
[8,] FALSE FALSE
[9,] FALSE TRUE
[10,] FALSE FALSE
[11,] FALSE FALSE
[12,] FALSE FALSE
[13,] FALSE FALSE
[14,] FALSE FALSE
[15,] FALSE FALSE
[16,] FALSE FALSE
[17,] FALSE FALSE
[18,] FALSE FALSE
[19,] FALSE FALSE
[20,] FALSE FALSE
[21,] TRUE FALSE
[22,] FALSE FALSE
[23,] FALSE FALSE
[24,] FALSE FALSE
[25,] FALSE FALSE
[26,] FALSE FALSE