Вопросы к SO должны иметь воспроизводимый код и данные.Поскольку в вопросе не было предоставлено никаких данных, я предоставил образец примечания Data
в примечании в конце.Если ваши данные отличаются от данных, внесите соответствующие изменения.
Мы также определяем в примечании фрейм входных данных Codes
такой, что Codes[i, j]
- это код -1, 0 или 1, который следует использовать для ответаравно i в вопросе j.
Поскольку ответы представлены как 1, 2, 3, 4 в Data
, мы можем использовать индексирование в Codes
для поиска выходного кода, соответствующего каждому ответу.
cbind( Data[1], mapply(function(x, codes) codes[x], Data[-1], Codes))
с указанием этого фрейма данных:
Person Q1 Q2
1 A 0 1
2 B 1 0
3 C 0 -1
4 D -1 0
5 E 0 1
6 F 1 0
7 G 0 -1
8 H -1 0
Примечание
Предполагаемые входные данные:
Data <- data.frame(Person = LETTERS[1:8], Q1 = 1:4, Q2 = 4:1, stringsAsFactors = FALSE)
# if, on Q1, the answer is 1 then use 0, if it is 2 use 1, etc.
Codes <- data.frame(Q1 = c(0, 1, 0, -1), Q2 = c(0, -1, 0, 1))