我有两个名为lagcolmean和Dropcolmax的数据框,其中rownames是公司,列名是月日期。
00-02 00-03 00-04
TENAGA NASIONAL 0.39 0.07 -0.08
SIME DARBY -0.09 -0.12 -0.53
DIGI.COM 0.79 0.96 -1.14
GENTING -0.11 -0.27 -0.16
PETRONAS GAS -0.30 -0.09 -0.98
and
00-01 00-02 00-03
TENAGA NASIONAL 5.61 3.95 4.12
SIME DARBY 10.87 1.97 6.78
DIGI.COM 21.21 9.61 25.40
GENTING 11.55 2.87 4.34
PETRONAS GAS 1.79 1.27 4.75
当我想运行横截面回归以找到每个时期的斜率系数时,我使用这些公式
library(broom)
fit4 <- lapply(names(Dropcolmax), function(x){
dd = tidy(lm(lagcolmean[[x]] ~ Dropcolmax[[x]]))
data.frame(name = x, dd)})
但它会产生此错误消息:model.frame.default中的错误(formula = lagcolmean [[x]] ~Dropcolmax [[x]] ,: 变量'lagcolmean [[x]]'
的无效类型(NULL)答案 0 :(得分:0)
将你的名字改为rownames和你的lm规范:
include:domain.com
你会得到(按行):
fit4 <- lapply(rownames(Dropcolmax), function(x){
dd = tidy(lm(as.numeric(lagcolmean[rownames(lagcolmean)==x,]) ~ as.numeric(Dropcolmax[rownames(Dropcolmax)==x,])))
data.frame(name = x, dd)})
编辑2:如果您想按列列出结果
> fit4
[[1]]
name term estimate std.error statistic p.value
1 TENAGA NASIONAL (Intercept) -0.9721944 0.4851794 -2.003783 0.2946863
2 TENAGA NASIONAL as.numeric(Dropcolmax[rownames(Dropcolmax) == x, ]) 0.2409783 0.1050042 2.294939 0.2616084
[[2]]
name term estimate std.error statistic p.value
1 SIME DARBY (Intercept) -0.2518569598 0.41291644 -0.60994656 0.6513227
2 SIME DARBY as.numeric(Dropcolmax[rownames(Dropcolmax) == x, ]) 0.0007936228 0.05517726 0.01438315 0.9908440
你会得到:
indc=names(Dropcolmax) %in% names(lagcolmean)
fit5 <- lapply(names(Dropcolmax)[indc], function(x){
df=data.frame(lagcolmean[x] , Dropcolmax[x])
dd = tidy(lm(df[,1]~df[,2]))
data.frame(name = x, dd)})