我有这样的表格:
id BiotinControl1_2 BiotinControl2 BiotinControl3 BiotinTreatment1_2 BiotinTreatment2 BiotinTreatment3 Sequence
1 75 3893050.50 2717893.32 3206861.1 3435216.40 3768203.0 3647604.45 AAAAGAAAVANQGKK
2 192 900604.61 741299.33 937413.2 818936.89 937764.7 751303.46 AAAAGAAAVANQGKK
3 3770 90008.14 87127.07 107568.6 85120.95 101947.6 90152.82 AAFTKLDQVWGSE
我使用以下代码重新组织数据:
tbl_reo <- melt(tbl_anv, measure.vars=2:7)
所以现在我的数据如下所示:
id Sequence variable value
1 75 AAAAGAAAVANQGKK BiotinControl1_2 3893050.50
2 192 AAAAGAAAVANQGKK BiotinControl1_2 900604.61
3 3770 AAFTKLDQVWGSE BiotinControl1_2 90008.14
我想进行方差分析。我想在循环中逐个 id 来做。因此,首先,我为包含所有 6 个值的 id 创建了一个表,以及说明该值属于哪个变量的变量列。我想对这 2 列进行方差分析。
编辑:所以对于每个id,我想计算lm(值~变量)。
aov.test <- summary(aov(tbl_reo$value ~ as.factor(tbl_reo$variable)))
tbl_reo[,5] <- aov.test[[1]]$'Pr(>F)'[1]
我用来计算方差分析的代码,但它无法正常工作。我想将结果放在数据中的额外列中。
tbl_anv <- tbl_all_onlyK[,c("id", "BiotinControl1_2", "BiotinControl2", "BiotinControl3", "BiotinTreatment1_2", "BiotinTreatment2", "BiotinTreatment3", "Sequence")]
tbl_reo <- melt(tbl_anv, measure.vars=2:7)
dat <- vector("integer", length = ncol(tbl_reo))
names(dat) <- colnames(tbl_reo)
for (var in variable) {
dat[var] <- anova(lm(value ~ tbl_reo[, var], data = tbl_reo))$"Pr(>F)"[1]
}
很难理解你想做什么。由于您的问题仍然不清楚,这只是一个近似的答案....
但我认为您正在寻找by
或plyr
套餐中的ddply
,按组进行一些治疗。例如,首先我创建一些可重现的数据。(请了解如何重现数据,这对于解决您的问题至关重要)。
set.seed(1)
vars <- c("id", "BiotinControl1_2", "BiotinControl2", "BiotinControl3",
"BiotinTreatment1_2", "BiotinTreatment2", "BiotinTreatment3",
"Sequence")
tbl_reo <- data.frame(value = rnorm(100),
id = gl(6,100/6),
variable= sample(vars,100,rep=TRUE))
所以我的数据是这样的:
str(tbl_reo)
'data.frame': 100 obs. of 3 variables:
$ value : num -0.626 0.184 -0.836 1.595 0.33 ...
$ id : Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
$ variable: Factor w/ 8 levels "BiotinControl1_2",..: 2 1 4 2 1 4 4 1 2 5 ...
所以对于每个id,我想计算lm(值~变量)并比较ids之间的方差...
因此,使用 by
您可以像这样获取每个 id 的方差分析:
by(tbl_reo,tbl_reo$id,function(x){
anova(lm(value ~ variable, data = x))$"Pr(>F)"[1]
})
tbl_reo$id: 1
[1] 0.7430758
---------------------------------------------------------------------------------------------------------
tbl_reo$id: 2
[1] 0.122237
---------------------------------------------------------------------------------------------------------
tbl_reo$id: 3
[1] 0.8914668
---------------------------------------------------------------------------------------------------------
tbl_reo$id: 4
[1] 0.7790441
---------------------------------------------------------------------------------------------------------
tbl_reo$id: 5
[1] 0.6833726
---------------------------------------------------------------------------------------------------------
tbl_reo$id: 6
[1] 0.7323833