如何将线性模型应用于数据框的特定部分?
How to apply a linear model to specific parts of a data frame?
我正在使用包含 3 列的数据框 (dt
):Time
、Temp
、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
作为自变量,Time
作为因变量。
所以我只想针对物种 X 或 Y 测试它。此外,我想在给定的 Temp
间隔(假设 20 - 29 摄氏度)测试我的一个物种。
我试过:
lm(Temp ~ Time, data = td[Species = Species-Y])
for(i in unique(td$Species)){
model <- list(model)
model[i] <- lm(td$Time ~ td$Temp)
}
model <- function (dados) {
return(lm(td$Time[,dados] ~ td$Temp[,dados]))
}
model(dados = td$Species-X)
base 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, ])
我正在使用包含 3 列的数据框 (dt
):Time
、Temp
、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
作为自变量,Time
作为因变量。
所以我只想针对物种 X 或 Y 测试它。此外,我想在给定的 Temp
间隔(假设 20 - 29 摄氏度)测试我的一个物种。
我试过:
lm(Temp ~ Time, data = td[Species = Species-Y])
for(i in unique(td$Species)){
model <- list(model)
model[i] <- lm(td$Time ~ td$Temp)
}
model <- function (dados) {
return(lm(td$Time[,dados] ~ td$Temp[,dados]))
}
model(dados = td$Species-X)
base 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, ])