将数据帧与for循环进行比较

时间:2018-02-23 10:12:37

标签: r dataframe

对不起,如果这是一个基本问题。我到处寻找帮助,似乎无法找到答案。基本上我有两个数据框,一个是“答案密钥”,答案从第3列开始。

和一个包含50名学生答案的主数据框。

学生ID在第一栏,答案从第三栏开始。

如果问题是对还是错,我如何构造一个for循环来返回一个TRUE或FALSE的向量或数据框?感谢您的帮助!这让我难过了一个星期

2 个答案:

答案 0 :(得分:0)

如果你真的想在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)
}

这应该会在第一列中为您提供一个包含学生ID的表格,以及每个问题的回答是真是假。

答案 1 :(得分:0)

考虑转置数据并进行列比较。使用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