首页 > 解决方案 > 所选列与 R 中 data.frame 的其余部分之间的相关性

问题描述

我的数据大约有 270 列,其中 160.000主要是非数字观察

我需要找到列之间的模式和依赖关系。例如,我需要将“材料”列与其他列相关联。

Material   |  Name    |  Country | Vehicle    
----------------------------------------------
Bricks     |  John    |  A       | Car
Bricks     |  John    |  A       | Car
Bricks     |  John    |  A       | Motorcycles
Bricks     |  John    |  B       | Motorcycles
Concrete   |  Bill    |  B       | Car
Concrete   |  Bill    |  B       | Car
Concrete   |  Bill    |  B       | Car
Concrete   |  Bill    |  A       | Car

我想要的结果是:

Name    - 100% 
Country - 75%
Vehicle - 50%

我试过了:

library("GoodmanKruskal")
Cor_matrix<- GKtauDataframe(df)
plot(Cor_matrix)

但得到:表中的错误(x,y,useNA = includeNA):尝试使用> = 2 ^ 31个元素制作表

或者:

library("corrr")
df %>% correlate() %>% focus(Material)

stats::cor(x = x, y = y, use = use, method = method) 中的错误:'x' 必须是数字

所以我正在寻找可以处理非数字的包和代码示例。提前谢谢了。

标签: rdataframecorrelation

解决方案


您的代码使用函数GKtauDataframe,该函数尝试同时计算所有 270 x 270 组合的指标。那太多了。

但是,正如您所提到的,您宁愿将列与所有其他列进行比较。这应该是可行的,并且不需要那么多内存。该函数GKtau在一对列之间执行此操作:

GKtau(df[, 1], df[, 2])

要针对所有其他列获取第一列的值,只需调用:

lapply(df[, -1], GKtau, df[, 1])

当然,您可以使用以下方法优化输出:

sapply(df[, -1], function(di) GKtau(df[, 1], di)$tauxy)

这使得输出方式更加紧凑。


推荐阅读