我想通過將每個響應/列除以它的組平均值來計算相對響應值。 我已經設法產生了一個詳盡(因此不令人滿意)的方法。我的數據集非常大,包含多個組和響應。按組劃分列(在數據框中分組)
###############
# example
# used packages
require(plyr)
# sample data
group <- c(rep("alpha", 3), rep("beta", 3), rep("gamma", 3))
a <- rnorm(9, 10,1) #some random data as response
b <- rnorm(9, 10,1)
df <- data.frame(group, a, b)
# my approach
# means for each group and response
df.means <- ddply(df, "group", colwise(mean))
# clunky method
df$rel.a[df$group=="alpha"] <-
df$a[df$group=="alpha"]/df.means$a[df.means$group=="alpha"]
df$rel.a[df$group=="beta"] <-
df$a[df$group=="beta"]/df.means$a[df.means$group=="beta"]
# ... etc
df$rel.b[df$group=="gamma"] <-
df$b[df$group=="gamma"]/df.means$b[df.means$group=="gamma"]
#desired outcome (well, perhaps with no missing values)
df
###############
我一直在使用r一段時間,但我仍然努力與瑣碎的數據處理程序。我相信我一定會錯過一些東西,我怎樣才能更好地解決這些問題?
由於我的職位是ambigously指出:@大衛的方法通過使用data.table(根據我的代碼解決方案)docendo的方法轉換整個數據幀添加列通過使用dplyr(基於我的問題的解決方案) – EfEx