计算数据帧的所有子集的系数

时间:2018-05-23 12:40:41

标签: r dataframe lm coefficients

我想分别计算数据框中每个人的权重和时间的相关系数。数据框由大约40个人组成,每个人观察10次或更少。我已经能够分别计算出个人的系数,但是不能让R一次性完成这个。

我的数据看起来像这样:

id <- c(rep(1, times = 10), rep(3, times = 10), rep(4, times = 10))
time <- c(1,2,3,4,5,6,7,8,9,10)
weight <- runif(30, min = 50, max = 100)
dataframe <- data.frame(id, time, weight)

我已成功使用此函数计算单独个体的系数:

coef(lm(weight~time, data = dataframe))[2]

我尝试了for-loopsaggregateapply,但无法弄清楚如何一次性计算所有个体的系数,并将输出存储为矢量。< / p>

1 个答案:

答案 0 :(得分:2)

通过id

拆分,然后循环并获取 coef

sapply(split(dataframe, dataframe$id), function(i) coef(lm(weight ~ time, data = i))[2])
#     1.time      3.time      4.time 
# 1.48800159 -0.05921987 -2.57523482