比较数据框中的 2 列并在数据框中创建新列

comparing 2 columns in a data-frame and creating a new column in data frame

我有来自 2 个数据框的 "merged" 数据,并且我比较了 2 列 'answer' 和 'selected_answer' 我在 final_ans 列中得到了真值和假值执行以下代码,

dt$final_ans<- dt$correct_answer==dt$selected_answer

但我想根据 final_ans 列的值添加另一列 'score' 如果为真则希望在列分数中显示 3,如果为假则显示 0。 下面是我所做但答案错误的代码。如下所示,所有行仅显示 0。如何编辑代码以获得精确值。

    Q_id c1  c2 c3 c4 answer stu_id selected_answer  final_ans score
     2   1   2  3   4   2    82       3                false     0
     3   1   2  3   4   2    58       3                false     0
     3   1   2  3   4   2    83       2                true      0
     3   1   2  3   4   2    100      3
     4   1   2  3   4   1    79       3
     5   1   2  3   4   1    100      3
     7   1   2  3   4   1    54       3
     7   1   2  3   4   1    92       3
     8   1   2  3   4   3    56       2

你可以这样做:

dt <- data.frame(a=1:5, b=5:1) # here are your 2 'answer' columns
dt$test <- dt$a==dt$b # here is your test for correct answer
dt$score <- dt$test * 3 # here is the score you give for a 'TRUE' answer
dt

将逻辑向量乘以 3,将 TRUE 替换为 3,将 FALSE 替换为 0。即,

rt$is_correct <- dt$correct_answer==dt$selected_answer
rt$is_correct * 3 

如果带有 final_ans 的列不是逻辑的,而是一个字符,那么您需要先转换它,然后再创建新的列。

dt$final_ans <- as.logical(dt$final_ans) #to convert to logical
dt$score <- dt$final_ans * 3 #to create your new column