R如何将函数应用于分组数据帧的行?

时间:2015-10-13 02:08:29

标签: r

假设我有一个像这样生成的数据框

dataframe <- data.frame(name = (rep(c('A', 'B', 'C', 'D'), 25)), probe = rep(number, each = 4), a = rnorm(100), b = (rnorm(100)+1), c = (rnorm(100)+5))

> head(dataframe)
  name probe           a           b        c
1    A     1  0.03394554  2.97384424 4.173368
2    B     1  1.64304498  2.67977648 5.027671
3    C     1  0.35266588  1.62455820 5.664635
4    D     1 -1.24197302  0.29907974 5.243112
5    A     2 -0.20330593  0.45405930 6.603498
6    B     2 -1.06909795 -0.02575508 4.318659

样品在列中。变量在行中。

我需要使用相同的探针计算非常一组样本的比率(A+B)/(C+D),例如probe == 1probe == 2时。 我可以通过探测groupby

但似乎函数可以应用于列,如何将函数应用于groupby对象中的行?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我重塑了。

library(dplyr)
library(tidyr)

df %>%
  gather(variable, value, -name, -probe) %>%
  spread(name, value) %>%
  mutate(ratio = (A+B)/(C+D) )

答案 1 :(得分:0)

或者我们可以使用recast中的reshape2。它是melt/dcast的便捷包装器。我们在重塑后添加新列“比率”。

library(reshape2)
transform(recast(df, measure.var=c('a', 'b', 'c'),
     probe+variable~name, value.var='value'), ratio= (A+B)/(C+D))