У меня есть столбцы, состоящие из ответов на различные тестовые вопросы (например, Q1, Q2, Q3), и я хотел бы написать функцию, которая оценивала бы эти ответы и создавать новые столбцы с оценками для каждого тестового вопроса (1 или 0), где «id» относится к разным людям.Функция R для оценки значений в столбцах data.table против другого набора значений
id Q1 Q2 Q3
1 4 3 3
2 7 3 7
3 8 5 6
4 8 2 8
5 4 6 8
6 4 6 6
7 4 6 5
8 4 6 8
9 4 6 6
Выход Я ищу это
id Q1 Q2 Q3 Q1_score Q2_score Q3_score
1 4 3 3 1 0 0
2 7 3 7 0 0 0
3 8 5 6 0 0 0
4 8 2 8 0 0 1
5 4 6 8 1 1 1
6 4 6 6 1 1 0
7 4 6 5 1 1 0
8 4 6 8 1 1 1
9 4 6 6 1 1 0
Я определил правильные ответы и новые имена столбцов ниже, но я не могу показаться, чтобы выяснить функцию, которая будет делать что-то вроде «для первого вопроса« Q1 », если ответ равен первому значению в« ответах », верните 1 else 0« ... then »для второго вопроса« Q2 », если ответ равен второе значение ... »и т. д.
answers=c(4,6,8)
newcols=paste('Q',rep(1:3),'_score',sep='')
dt[,(newcols):= function, id, .SDcols=2:4]
Я боюсь, что мой 'data.table' знание бедно, но вы могли бы сделать это с' mapply() 'в базе R. Будет что-то вроде' DT [, newcols] < - mapply (функция (x, y) ifelse (x == y, 1, 0), dt [2: 4], ответы) ' – LAP