例如,我有以下数据。
Cultivar=rep(c("CV1","CV2"),each=12)
Nitrogen=rep(rep(c("N0","N1","N2","N3"), each=3),2)
Block=rep(c("I","II","III"),8)
Yield=c (99, 109, 89, 115, 142, 133, 121, 157, 142, 125,
150, 139, 82, 104, 99, 117, 125, 127, 145, 154,
154, 151, 166, 175)
dataA=data.frame(Cultivar,Nitrogen,Block,Yield)
Cultivar Nitrogen Block Yield
1 CV1 N0 I 99
2 CV1 N0 II 109
3 CV1 N0 III 89
4 CV1 N1 I 115
5 CV1 N1 II 142
6 CV1 N1 III 133
7 CV1 N2 I 121
8 CV1 N2 II 157
9 CV1 N2 III 142
10 CV1 N3 I 125
11 CV1 N3 II 150
12 CV1 N3 III 139
13 CV2 N0 I 82
14 CV2 N0 II 104
15 CV2 N0 III 99
16 CV2 N1 I 117
17 CV2 N1 II 125
18 CV2 N1 III 127
19 CV2 N2 I 145
20 CV2 N2 II 154
21 CV2 N2 III 154
22 CV2 N3 I 151
23 CV2 N3 II 166
24 CV2 N3 III 175
我想对每个品种做方差分析。所以,我使用下面的代码:
ANOVA=aov(Yield~Nitrogen +factor(Block), data=subset(dataA, Cultivar=="CV1"))
summary(ANOVA)
看起来不错,但在我的实际数据中,我有30个品种,所以不可能手动将数据按品种划分30次。我相信有一种方法可以自动分析每个品种的数据,而无需在R中使用subset()
。
你能告诉我怎么做吗?
谢谢!
2条答案
按热度按时间nhaq1z211#
可以使用
lapply()
输出
j1dl9f462#
为了进一步理解YH的答案,这种类型的问题很适合使用拆分、应用、合并方法。