比较数据框中的 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
我有来自 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