在R中的predict.lm之后将row.names设置为变量

时间:2014-08-25 17:08:35

标签: r dataframe predict

我在一组测试数据上运行了一个predict.lm。 不是每个观察都得到输出的结果。 当我运行我的预测代码时,我得到以下结果

predict(lm(Q2 ~ Q1 + Q3A + Q3B + Q3C + Q3D + Q3E + Q3H + Q5_2C + Q5_2E + Q9A + Q9B + Q9E + Q9F, data=workingtest))

1     2     3     5     6     7     8     9    10    11    12    13    14    15    16    17 
9.81  9.96 10.11  7.40  6.82  8.00 10.29  8.42  7.23  1.92  7.87  9.23  9.22  9.86  9.10  6.29 
18    19    20    21    22    23    24    26    27    28    29    30    31    32    33    34 
5.92 10.08  9.96  7.79  7.70  9.96 10.17 10.08  6.62  9.20  8.07  8.85  9.96  9.81  6.16  9.20 
35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50 
9.41  4.18  8.49  7.64  9.04  8.91  7.93  4.00  9.68  8.00  8.75  9.51  1.92  9.96  9.09  8.29 
51    52    53    54    56    57    58    59    60    61    62    63    64    65    66    67 
7.99  6.58  9.10  7.79  5.15  7.75  4.44 10.02  5.58  8.55 10.08  6.40  7.12 10.09  7.55 10.14 
68    69    70    71    72    73    74    75    76    77    79    80    81    82    83    84 
8.34 10.08  7.60 10.08 10.08  6.66  9.90  6.74  9.96  7.52  6.46  9.29 10.08  8.57  9.95  7.75 
85    86    88    89    90    91    92    93    94    95    96    97    98    99   100   101 
10.04 10.04  8.17  8.49  7.70  8.94  9.93  8.85  7.89  9.49  9.44  9.96  7.66  6.77  9.76  8.99 
102   103   104   105   106   107   108   109   110   111   112   113   114   115   116   117 
7.90  8.98  9.96 10.14 10.19  7.32  9.31  7.97  2.55  7.36  6.95  9.96  7.26  6.61 10.01  4.44 
118   119   120   121   122   123   124   125   126   127   128   129   130   131   132   133 
9.72  8.01  9.78  8.41  8.11  9.57  8.74  9.58  6.64  9.96 10.01  8.73  7.39  7.00  8.91  6.96 

我想创建一个数据框,其中包含行名称和数据框中的结果 但是,当我创建数据框时,row.names不是变量。我需要这个变量来匹配原始数据集以匹配结果。

这是我用来制作数据框的代码。当我看它只显示1个变量时,但是当我提起它时,两个变量都列出来了。我无法解决这个问题!

Predicting <- data.frame(predict(lm(Q2 ~ Q1 + Q3A + Q3B + Q3C + Q3D + Q3E + Q3H + Q5_2C + Q5_2E + Q9A + Q9B + Q9E + Q9F, data=workingtest)))

1 个答案:

答案 0 :(得分:0)

使用newdata参数predict,默认情况下会在缺少数据时预测NA。没有它,它只使用原始拟合中使用的数据。

你的例子不可重复,所以我会做一个。

> d <- data.frame(x=c(1:3,NA,5:6), y=1:6+rnorm(6))
> m <- lm(y~x,data=d)
> predict(m)
       1        2        3        5        6 
0.138060 1.154337 2.170614 4.203168 5.219445 
> predict(m, newdata=d)
       1        2        3        4        5        6 
0.138060 1.154337 2.170614       NA 4.203168 5.219445 

或者,您可以在原始版本中指定na.exclude

> m <- lm(y~x,data=d, na.action=na.exclude)
> predict(m)
       1        2        3        4        5        6 
2.023771 2.872983 3.722195       NA 5.420618 6.269830