2014-12-03 131 views
0

我使用lmList上做一个数据帧的许多子集的线性模型:lmList - 组信息丢失

res <- lmList(Rds.on.fwd~Length | Wafer, data=sub, na.action=na.omit, pool=F) 

这工作得很好,我也得到所需的输出(最大输出未显示):

  (Intercept) Length 
    2492 5816.726 1571.260 
    2493 2520.311 1361.317 
    2494 3058.408 1286.516 
    2502 4727.328 1344.728 
    2564 3790.942 1576.223 
    2567 2350.296 1290.396 

我已将子集“Wafer”(上面的第一列)。

head(sub): 

    ERF Wafer Device Row Col Width Length    Date Von.fwd Vth.fwd STS.fwd On.Off.fwd Ion.fwd Ioff.fwd Rds.on.fwd 
1 474 2492 11.06E 11 6 100  5 09/10/2014 12:05 0.596747 3.05655 0.295971 7874420 0.000104 1.32e-11 9626.54 
3 474 2492 11.08E 11 8 100  5 09/10/2014 12:05 0.581131 3.08380 0.299050 7890780 0.000109 1.38e-11 9193.62 
5 474 2492 11.09E 11 9 100  5 09/10/2014 12:05 0.578171 3.06713 0.298509 8299740 0.000107 1.29e-11 9337.86 
7 474 2492 11.10E 11 10 100  5 09/10/2014 12:05 0.565504 2.95532 0.298349 8138320 0.000109 1.34e-11 9173.15 
9 474 2492 11.11E 11 11 100  5 09/10/2014 12:05 0.581289 2.97091 0.297885 8463620 0.000109 1.29e-11 9178.50 
11 474 2492 11.12E 11 12 100  5 09/10/2014 12:05 0.578003 3.05802 0.294260 9326360 0.000112 1.20e-11 8955.51 

我不想:但是,我的数据帧(“子”)内,该数据被其他因素“ERF”(还有很多其他因素,但我只关心“ERF”)进行分组ERF包括在我的LM但我想保留因子“ERF”与LM结果着色图以后,即我想这一点:

ERF Wafer (Intercept) Length 
    474 2492 5816.726  1571.260 
    474 2493 2520.311  1361.317 
    474 2494 3058.408  1286.516 
    475 2502 4727.328  1344.728 
    475 2564 3790.942  1576.223 
    476 2567 2350.296  1290.396 

我知道我可以只添加一列来做到这一点稍后手动包含正确序列的ERF的载体的结果。但是,我经常将数据添加到该设置,并且不希望每次都这样做。我确定有一种更优雅的方式?

感谢

编辑 - 添加解决方案数据:

res <- ddply(sub, c("ERF", "Wafer"), function(x) coefficients(lm(Rds.on.fwd~Length,x))) 

head(res) 

    ERF Wafer (Intercept) Length 
    1 474 2492 5816.726 1571.260 
    2 474 2493 2520.311 1361.317 
    3 474 2494 3058.408 1286.516 
    4 474 2502 4727.328 1344.728 
    5 479 2564 3790.942 1576.223 
    6 479 2567 2350.296 1290.396 

如果我放弃ERF:

res <- ddply(sub, c("Wafer"), function(x) coefficients(lm(Rds.on.fwd~Length,x))) 

head(res) 

    Wafer (Intercept) Length 
1 2492 5816.726 1571.260 
2 2493 2520.311 1361.317 
3 2494 3058.408 1286.516 
4 2502 4727.328 1344.728 
5 2564 3790.942 1576.223 
6 2567 2350.296 1290.396 

这是否有意义?我有错误地问这个问题吗?

+0

'sub'是不是真的是你想要在要求的环境功能使用命名(数据)在参数列表中。 'sub'也是一个基本的R函数 – 2014-12-03 16:48:59

+0

谢谢理查德,我会在将来改变。 – Pete900 2014-12-03 16:53:42

回答

0

啊,多一点研究,我回答在此基础上回答我的问题:

Regression on subset of data set

必须更努力下一次。我ddply用来代替lmList(使我不知道为什么会有人使用lmList ......也许我应该问一个问题吗?):

res1 <- ddply(sub, c("ERF", "Wafer"), function(x) coefficients(lm(Rds.on.fwd~Length,x))) 
+0

我不认为这是你所想的。我认为你在装配模型时不想用'ERF'来区分(即你只适合Wafer)。 – 2014-12-03 16:09:06

+0

你说得对,我没有,但不知怎的,它似乎输出我想要的。无论我是否包含“ERF”,系数都是相同的。只是,如果我包含ERF,则组信息会被转发到输出。我会发布一些数据以确保我的正确。 – Pete900 2014-12-03 16:24:31