在R中重复三次
我有一套80个样本,有2个变量,每个变量测量为三份:在R中重复三次,r,R,我有一套80个样本,有2个变量,每个变量测量为三份: sample var1a var1b var1c var2a var2b var2c 1 -169.784 -155.414 -146.555 -175.295 -159.534 -132.511 2 -180.577 -180.792 -178.192 -177.294 -171.809 -166.147 3 -178.605 -184.183 -177.672 -167.321
sample var1a var1b var1c var2a var2b var2c
1 -169.784 -155.414 -146.555 -175.295 -159.534 -132.511
2 -180.577 -180.792 -178.192 -177.294 -171.809 -166.147
3 -178.605 -184.183 -177.672 -167.321 -168.572 -165.335
等等。如何为var1和var2的每一行应用均值、sd、se等函数?此外,数据集还包含NAs。感谢您费心回答这些基本问题如果有NAs,您的预期结果是什么
apply(df[-1],1,mean)
(或任何函数)将起作用,但它将为行提供NA结果。如果您可以用0替换NA,那么您可以执行df[is.NA(df)]一种方法是重塑数据集。另一种可能是在数据帧子集的行上应用函数。
因此,对于var2X
您有:
apply(dat[5:7], 1, function(x){m <- mean(x); s <- sd(x); da <-c(m, s) })
[,1] [,2] [,3]
[1,] -155.78000 -171.750000 -167.076000
[2,] 21.63763 5.573734 1.632348
一种方法是将数据重塑为长格式:
resdf <- reshape(mydf, direction = "long", idvar = 1, varying = list(2:4, 5:7), v.names = c("var1", "var2"))
其中:
mean sd se
var11 -157.25 11.72 6.77
var12 -179.85 1.44 0.83
var13 -180.15 3.52 2.03
var21 -155.78 21.64 12.49
var22 -171.75 5.57 3.22
var23 -167.08 1.63 0.94
NA值被省略。您希望var1a
var1b
var1c
的每一行(样本1、2等)的平均sd等,以及var2a
var2b
和var2c
的每一行(样本1、2等)的另一个sd平均值?实际上,对于means,您希望每行和所有var1
和var2
都有6个means?
library(psych)
round(describeBy(resdf[,3:4], resdf$sample, mat = T)[,c(5:6, 15)], digits = 2)
mean sd se
var11 -157.25 11.72 6.77
var12 -179.85 1.44 0.83
var13 -180.15 3.52 2.03
var21 -155.78 21.64 12.49
var22 -171.75 5.57 3.22
var23 -167.08 1.63 0.94