我有一个lm对象,想要用系数提取公式.我知道如何提取没有系数的公式,以及如何在没有公式的情况下获得系数,而不是如何获得例如.y~10 + 1.25b而不是y~b或者是拦截,b等等的表
这是我目前正在使用的代码:
a = c(1, 2, 5)
b = c(12, 15, 20)
model = lm(a~b)
summary(model)
formula = formula(model)
formula
coefficients(model)
Run Code Online (Sandbox Code Playgroud)
我想从上面得到的是y~-5.326 + .51b
谢谢
编辑:在我的实际代码中,我正在使用超过63个预测器和18个不同的模型,所以我想要一些可以在没有太多工作的情况下扩展的东西.
我有一个长格式数据帧狗,我正在尝试使用reshape()函数重新格式化为宽.它目前看起来像这样:
dogid month year trainingtype home school timeincomp
12345 1 2014 1 1 1 340
12345 2 2014 1 1 1 360
31323 12 2015 2 7 3 440
31323 1 2014 1 7 3 500
31323 2 2014 1 7 3 520
Run Code Online (Sandbox Code Playgroud)
dogid列是一堆id,每只狗一个.12个月和2014年至2015年的月份列为1到12之间.培训类型在1到2之间变化.每只狗每个月 - 年 - 训练类型组合都有一个timeincomp值,因此每只狗有48个条目.家庭和学校从1-8不等,每只狗都是不变的(同一只狗的每个入口都有相同的学校和家庭).comp中的时间是我的响应变量.
我希望我的桌子看起来像这样:
dogid home school month1year2014trainingtype1 month2year2014trainingtype1
12345 1 1 340 360
31323 7 3 500 520
Run Code Online (Sandbox Code Playgroud)
等(每个月 - 年 - 训练类型组合的列)
我应该在重塑中使用哪些参数来实现这一目标?
我有一个像这样的数据帧:
ID Value1 Value2 Value3
1 20 25 0
2 2 0 0
3 15 32 16
4 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想要做的是仅根据非零值计算每个人(ID)的方差,并在无法做到的情况下返回NA.
因此,例如,在此示例中,ID 1的方差将为var(20,25),对于ID 2,它将返回NA,因为您无法仅在一个条目上计算方差,对于ID 3,var将是var( 15,32,16)并且对于ID 4,它将再次返回NULL,因为它根本没有数字来计算方差.
我该怎么做?我目前有以下(不完整)代码,但这可能不是最好的方法:
len=nrow(d)
variances = numeric(len)
for (i in 1:len){
#get all nonzero values in ith row of data into a vector nonzerodat here
currentvar = var(nonzerodat)
Variances[i]=currentvar
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个玩具示例,但我实际使用的数据集有超过40个不同的值列来计算方差,因此容易扩展的内容会非常好.