2016-08-04 73 views
0

我有一个看起来像这样的数据:皮尔逊在相关R与一列试验未定义的数字

ID  Vehicle  MPH 
001  1   50 
001  1   60 
001  2   94 
001  2   78 
001  2   101 
001  3   34 
002  1   56 
002  2   98 
002  2   95 
002  3   36 
002  3   42 

我想用车辆类型相关联的MPH值,这意味着我会看到一个相关性三个车辆MPH的矩阵。这可能吗?如果是这样,我将如何在R中进行此操作。每个ID和车辆的数据行数不一定相同。任何意见是极大的赞赏!

数据:

ID <- c(001, 001, 001, 001, 001, 001, 002, 002, 002, 002, 002) 
Vehicle <- c(1,1,2,2,2,3,1,2,2,3,3,) 
MPH <- c(50, 60, 94,78,101,34,56,98,95,36,42) 
df <- data.frame(ID,Vehicle,MPH) 
+0

相关性是一对成对的统计量。如果你无法匹配车辆1到车辆2的值,那么执行相关就没有意义了。 “cor(1:3,1:3)”与“cor(1:3,c(2,1,3))”不同。如果您需要帮助选择适当的统计方法来比较不同的MPH值,您应该在[stats.se]中提问您的问题,统计问题与主题相关。 – MrFlick

回答

0

不知道完全对预期的输出。根据描述,我们需要对每个'ID'进行相关性处理,因此我们在创建序列(“Seq”)之后将'ID'的数据集list,然后acast(从reshape2)改为'wide'格式。通过“车辆”(ave步骤做到这一点)并应用cor函数。

library(reshape2) 
lapply(split(df[-1], df$ID), function(x) cor(acast(transform(x, Seq = 
     ave(Vehicle, Vehicle, FUN = seq_along)), 
     Seq~Vehicle, value.var = "MPH"), use = "pairwise.complete.obs")) 

注:对于use很多选择,因此最好将其更改为适合它做好相关的选项。