Сравнение фреймов данных с циклами 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
Другие вопросы по тегам