如何将线性模型应用于数据框的特定部分?

时间:2015-08-06 22:40:59

标签: r subset lm

我正在使用包含3列的数据框($meta = $xml.SelectSingleNode("//catalogue/produits/produit[@id='$($_.id)']/metas/meta[@code='$meta_code']") ):dtTimeTemp,例如

Species

第三栏有五种。 我想应用一个线性模型( Temp Time Species 1 10 241 Species-X 2 11 241 Species-X 3 12 241 Species-X 4 13 241 Species-Y 5 14 241 Species-Y 6 15 240 Species-Z ... ... ... ... 41 50 178 Species-Z )和lm作为我的自变量,Temp作为因变量。 因此,我想仅针对物种X或Y测试它。此外,我想以给定的Time间隔测试我的一个物种(比方说,20 - 29度C)。 我试过了:

Temp

1 个答案:

答案 0 :(得分:2)

基础R中的by()函数提供了一个解决方案:

by(td, td$Species, function(df) lm(df[,"Temp"] ~ df[,"Time"]))

如果您需要针对不同子集的不同规则,您可能需要逐组进行。例如,要为20-29(含)的临时值执行Species-Y,可以运行:

lm(Temp ~ Time, data = td[td$Species == "Species-Y" & td$Temp >= 20 & td$Temp <= 29, ])