假设我有一个像这样生成的数据框
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 == 1
或probe == 2
时。
我可以通过探测groupby
。
但似乎函数可以应用于列,如何将函数应用于groupby
对象中的行?
感谢您的帮助!
答案 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))