R 将一系列命令应用于分割数据帧

R 将一系列命令应用于分割数据帧,r,split,lapply,R,Split,Lapply,我在想如何解决这个问题时遇到了一些困难。我有一个数据框,我正在将其拆分为不同的站点(link5)。一旦分割,我基本上想在子集上运行一个线性回归模型。这是我正在使用的代码,但它肯定是不正确的。另外,如果我能将模型结果输出到一个新的数据框中,这样每个站点都有一行模型参数估计值,那将是非常棒的——这只是一个愿望,而不是现在的必要条件。谢谢你的帮助 les_events <- split(les, les$link5) result <- lapply(les_events) {

我在想如何解决这个问题时遇到了一些困难。我有一个数据框,我正在将其拆分为不同的站点(link5)。一旦分割,我基本上想在子集上运行一个线性回归模型。这是我正在使用的代码,但它肯定是不正确的。另外,如果我能将模型结果输出到一个新的数据框中,这样每个站点都有一行模型参数估计值,那将是非常棒的——这只是一个愿望,而不是现在的必要条件。谢谢你的帮助

 les_events <- split(les, les$link5)

 result <- lapply(les_events) {

   lm1 <-lm(cpe~K,data=les_events)
   coef <- coef(lm1)
   q.hat <- -coef(lm1)[2] 
   les_events$N0.hat <- coef(lm1[1]/q.hat)
}

les_events您有很多问题

  • 您尚未将函数(
    FUN
    参数)传递给
    lappy
  • 您的闭包(
    {}
    中的位几乎是,但不是您想要的函数体)
下面类似的内容将从您的模型中返回系数

 result <- lapply(les_events, function(DD){
   lm1 <-lm(cpe~K,data=DD)
   coef <- coef(lm1)

   data.frame(as.list(coef))
  })
将返回线性模型对象的列表,这可能更有用

对于更一般的
split/apply/combine
方法,使用
plyr
data.table

数据表
库(data.table)

DT你有很多问题

  • 您尚未将函数(
    FUN
    参数)传递给
    lappy
  • 您的闭包(
    {}
    中的位几乎是,但不是您想要的函数体)
下面类似的内容将从您的模型中返回系数

 result <- lapply(les_events, function(DD){
   lm1 <-lm(cpe~K,data=DD)
   coef <- coef(lm1)

   data.frame(as.list(coef))
  })
将返回线性模型对象的列表,这可能更有用

对于更一般的
split/apply/combine
方法,使用
plyr
data.table

数据表
库(data.table)

非常感谢你!我有很多工作要做。今天我将花一些时间来理解这一切。我真的很感谢你的帮助!非常感谢你!我有很多工作要做。今天我将花一些时间来理解这一切。我真的很感谢你的帮助!
library(data.table)
DT <- data.table(les)

result <- les[, {lm1 <- lm(cpe ~ K, data = .SD)
                 as.list(lm1)}, by = link5]
library(plyr)


result <- ddply(les, .(link5), function(DD){
   lm1 <-lm(cpe~K,data=DD)
   coef <- coef(lm1)

   data.frame(as.list(coef))
  })

# or to return a list of linear model objects
dlply(les, link5, function(DD){ lm(cpe ~K, data =DD)})