如何通过对变量进行分组来计算一列的百分比?

时间:2016-03-06 23:55:03

标签: r

我的(样本)数据结构如下:

Participant

我使用以下内容计算每个Condition下每个IndividAvgWork <- ddply(Individ, c("Participant", "Condition"), summarise, Power = mean(Power)) 完成的平均工作量:

Power

我现在希望计算data.frame Time中每分钟Individ执行的IndividAvgWork,占Participant中总平均功率的百分比。必须为每个Condition下的每个RelPower = c(120.30, 75.19, 54.14, 150.38) 完成此操作。有没有快速的方法来做到这一点?

在安慰剂条件下,Bill的预期输出的一个例子是:

Power

以上计算:(采样功率/平均功率)* 100。

作为一个有效的例子,比尔的Time在安慰剂Condition下的Condition为1 {400}。然后,我将此除以比尔的平均权力。安慰剂IndividAvgWork为332.50并存储在fatal: Authentication failed for (url of team project 中。将这些值代入得到:(400 / 332.5)* 100

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用库dplyr尝试这样的事情:

library(dplyr)
Individ %>% group_by(Participant, Condition) %>% mutate(PercentPower = round(Power / (mean(Power)) * 100, 2))

这就是它将产生的:

Source: local data frame [24 x 5]
Groups: Participant, Condition [6]

   Participant  Time Condition Power PercentPower
        (fctr) (dbl)    (fctr) (dbl)        (dbl)
1         Bill     1   Placebo   400       120.30
2         Bill     2   Placebo   250        75.19
3         Bill     3   Placebo   180        54.14
4         Bill     4   Placebo   500       150.38
5         Bill     1      Expr   300        64.45
6         Bill     2      Expr   450        96.67
7         Bill     3      Expr   600       128.89
8         Bill     4      Expr   512       109.99
9         John     1      Expr   300        82.76
10        John     2      Expr   500       137.93
..         ...   ...       ...   ...          ...