lml,dplyr和summary - 我有什么打破的吗?

时间:2014-12-02 17:37:05

标签: r

对我got a lot of help on previously的分析进行了跟踪,我今天尝试重新运行脚本并遇到了障碍。不确定是否有更新的东西爆炸或什么。我试图根据分层类型结构中的数据点获得斜率。最终结果如下:

Var1    Var2    Var3    Max Min Var Avg_Temp    Count   Pearson Slope
X2  X2  X6  156 7   149 28  51  -0.049  -0.111
X1  X2  X6  84  1   83  24  51  -0.345  -0.532
X1  X2  X7  184 8   176 33  45  -0.236  -0.825
X1  X4  X7  193 10  183 32  44  -0.131  -0.487
X1  X2  X5  33  4   29  21  34  -0.343  -0.251
X1  X1  X5  51  10  41  23  21  -0.088  -0.091
X1  X4  X6  62  7   54  23  20  0.045   0.070
X3  X2  X6  61  18  43  31  18  -0.345  -0.491

我过去常常使用的原始数据是:http://pastebin.com/pGyeCFpH

我从上一个帖子得到的反馈是有教育意义的,但我认为我的例子让问题更加复杂。无论如何,我开始工作的剧本是:

library(dplyr)

data <- read.table("clipboard",sep="\t",quote="",header=T)

newdata = summarise(group_by(data
                              ,Var1
                              ,Var2
                              ,Var3
                              )
                     ,Max = max(Temp)
                     ,Min = min(Temp)
                     ,Var = max(Temp) - min(Temp) 
                     ,Avg_Temp = mean(Temp)
                     ,Count = length(Temp)
                     ,Slope = summary(lm(Temp ~ Time))$coeff[2]
                     ,Pearson = cor(Time, Temp, method="pearson")
                     )

sortNewdata <- newdata3[order(-newdata3$Count),]
row.names(sortNewdata)<-NULL

除了上面的斜率函数外,所有工作都可以。在脚本工作之前,我只是尝试了一个Slope = lm(),但似乎R无法解析数据变量中的列名。所以我放了summary(lm()),这给了我正在寻找的斜坡。我想在更新R之后(我有一段时间没有重新访问过这个脚本),有些东西突然发现它返回的错误比以前更多:

Error in terms.formula(formula, data = data) : invalid term in model formula

有快速解决方法吗?我觉得我错过了一些非常简单的事情,因为经典的案例是“以前它有效,但现在却没有” - 这就是<?p>

1 个答案:

答案 0 :(得分:1)

您可以使用do()创建线性模型,然后将其结果系数连接到其他汇总数据。不确定它是否是最佳的,但它没有问题。

grouped <- group_by(data, Var1, Var2, Var3)

slopes <- do(grouped, data.frame(Slope = coef(lm(Temp ~ Time, data = .))[2]))

summs <- summarise(grouped, 
    Max = max(Temp), Min = min(Temp), Var = Max - Min, 
    Avg_Temp = mean(Temp), Count = n(), Pearson = cor(Time, Temp)
)

merge(summs, slopes)

导致

#   Var1 Var2 Var3       Max       Min       Var Avg_Temp Count     Pearson         Slope
# 1   X1   X1   X5  51.00152  9.595917  41.40560 22.66220    21 -0.08758313 -1.056267e-06
# 2   X1   X2   X5  32.96245  4.418733  28.54372 20.76607    34 -0.34291318 -2.900211e-06
# 3   X1   X2   X6  83.84625  1.078367  82.76788 23.74742    51 -0.34503598 -6.161756e-06
# 4   X1   X2   X7 184.30873  8.100817 176.20792 32.74564    45 -0.23631853 -9.545033e-06
# 5   X1   X4   X6  61.81107  7.389317  54.42175 22.76066    20  0.04487301  8.112494e-07
# 6   X1   X4   X7 193.37610 10.083400 183.29270 31.65270    44 -0.13108727 -5.636889e-06
# 7   X2   X2   X6 156.28450  7.483550 148.80095 27.64104    51 -0.04885709 -1.282404e-06
# 8   X3   X2   X6  61.02207 17.930583  43.09148 30.84206    18 -0.34453158 -5.681171e-06