R:如何根据因子水平计算差异?

标签 r

我有一个数据框 mytable对一组人进行两次测量的结果,A 和 B。

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

我想为每个人计算 A 和 B 的分数之间的差异。也就是说,我想获得:
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 :

ddply(mytable, "person", summarize,
      outcome_diff = outcome[measure == "A"] -
                     outcome[measure == "B"])
#   person outcome_diff
# 1      1         -0.3
# 2      2         -0.9
# 3      3          1.5

假设您总是恰好有两个度量 AB按照这个顺序,你也可以只做 ddply(mytable, "person", summarize, outcome_diff = -diff(outcome)) .

关于R:如何根据因子水平计算差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181877/

相关文章:

r - R 数据表中最近的 "n"滚动连接

r - "}"和 "else"之间的换行真的很重要吗?

减少上标字体大小 ggplot2 R

r - 如何从带有缩放响应的 lmer() 模型中取消缩放系数

python - 如何搜索具有相同列值的行并在不存在时插入行?

r - 如何完美对齐数量不等的图 (ggplot2,gridExtra)

r - 在 R 中将 2 个数据集组合在一个图中

r - "axis"不会将 x Axis 添加到箱线图

r - 如何在 R 中将列表作为参数传递?

r - rjags 和 r2jags 的区别