У меня есть кадр данных mytable
с результатами для двух измерений, A и B, взятых группой лиц.R: как вычислить различия на основе уровней фактора?
person measure outcome
1 A 3.6
2 A 2.3
3 A 4.2
1 B 3.9
2 B 3.2
3 B 2.7
Я хочу, чтобы вычислить для каждого человека, разница между оценками для А и В. То есть, я хочу получить:
person outcome_diff
1 -0.3
2 -0.9
3 1.5
Я искал ответ, но я нашел только некоторые относительно преобразований в пределах уровней фактора, а не через них.
я, наконец, удалось решить это, выполнив:
mytable$outcome[mytable$measure=="B"] <- -1*mytable$outcome[mytable$measure=="B"]
outtable <- aggregate(outcome ~ person, data=mytable, FUN=sum)
Хотя это работает, я задаюсь вопросом, как сделать это, не портя исходную таблицу. Кроме того, это решение весьма специфично для вычисления разницы. Что может быть более общим способом добиться того же?
спасибо! Я посмотрю на 'plyr'. Что касается альтернативы 'diff', я не уверен, что я ее понимаю: поскольку' result' имеет длину 6, 'diff (result)' должен иметь длину 5. Таким образом, чтобы получить желаемый 'result_diff', нужно дополнительно выберите нечетные элементы 'diff (result)', правильно? – DvD