2017-09-13 38 views
1

我有大约4000行和220列的数据集。 由于研究和分析的原因,我创建了一个相关矩阵,并滤除了大于0.4的所有值,以便进一步研究这些特征。如何在R中将相关矩阵转换为df来创建行名,行索引,列索引,列名?

这里是我做过什么:

df_high_corr <- which((res > 0.4 & res < 1), arr.ind = T) 
res1 <- as.data.frame(df_high_corr)) 

我把它转换成数据帧,但我只有行标签的左边,我想添加/绑定另一列会显示我的列名对应于col值。

例如:

__________|_row__|_col____|_col_name______ 
DM.RESY | 18 | 6  | dummy_col_name 
DM.MARIT | 19 | 6  | dummy_col_name 
PHX.dage |198 | 6  | dummy_col_name 
CRS.VSCLR |206 | 6  | dummy_col_name 
QH.HENGY | 61 | 12  | dummy_col_name2 
QC.CVWSF | 41 | 13  | dummy_col_name3 

请给我建议的方式来做到这一点 - 快速的创意和轻松,我想学习的最佳实践来做到这一点。

+0

是,也不是,我已经试过您的解决方案,但它并没有告诉我什么是我真正需要的。我已经使用另一个解决方案as.data.frame(as.table(data)),它解决了我的问题。 – Steves

回答

0

试试这个:

foo <- data.frame(col_name = colnames(res), col = 1:ncol(res)) 
merge(which((res > 0.4 & res < 1), arr.ind = T), foo) 

有没有必要使用tidyrbasemerge这是否完美。

使用mtcars我得到这个:

res <- cor(mtcars) 
foo <- data.frame(col_name = colnames(res), col = 1:ncol(res)) 
bar <- merge(which((res > 0.4 & res < 1), arr.ind = T), foo) 
head(bar) 

    col row col_name 
1 1 5  mpg 
2 1 7  mpg 
3 1 8  mpg 
4 1 9  mpg 
5 1 10  mpg 
6 2 3  cyl