【问题标题】:Calculate coefficient for all subsets of a data frame计算数据框所有子集的系数
【发布时间】:2018-11-02 11:05:27
【问题描述】:

我想分别计算数据框中每个人的权重和时间的相关系数。数据框由大约 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,但不知道如何一次性计算所有个体的系数并将输出存储为向量。

【问题讨论】:

  • 你应该展示你已经尝试过的东西(尤其是aggregate),这将有助于我们更好地帮助你。
  • 不确定这是否是您想要的,但您可以使用以下方法:df %&gt;% split(.$id) %&gt;% map(cor)。在此之前,请执行library(tidyverse)
  • 我尝试的是aggregate(desiccation_clean, by = list(id), FUN = mean, na.rm = TRUE),我尝试的应用是test &lt;- desiccation_clean[,lapply(.SD, mean), by = id] 两者都不起作用。 zx8754 建议的 split() 非常接近。

标签: r dataframe lm coefficients


【解决方案1】:

按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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多