首页 > 解决方案 > 折叠我的数据提取对角线元素

问题描述

我提取结果的方式以某种方式将它们保留为数据框中的对角线元素。我想减少数据,保留行名和列名。即合并行名和列名。

               1750:10-K:2006 1800:10-K:2006 1923:10-K:2006 2488:10-K:2006
1750:10-K:2005      0.9291217             NA             NA             NA
1800:10-K:2005             NA      0.9690067             NA             NA
1923:10-K:2005             NA             NA      0.8584429             NA
2488:10-K:2005             NA             NA             NA       0.956372
2969:10-K:2005             NA             NA             NA             NA
3133:10-K:2005             NA             NA             NA             NA
3197:10-K:2005             NA             NA             NA             NA
3333:10-K:2005             NA             NA             NA             NA
3370:10-K:2005             NA             NA             NA             NA
3673:10-K:2005             NA             NA             NA             NA
               2969:10-K:2006 3133:10-K:2006 3197:10-K:2006 3333:10-K:2006
1750:10-K:2005             NA             NA             NA             NA
1800:10-K:2005             NA             NA             NA             NA
1923:10-K:2005             NA             NA             NA             NA
2488:10-K:2005             NA             NA             NA             NA
2969:10-K:2005       0.861327             NA             NA             NA
3133:10-K:2005             NA      0.9375159             NA             NA
3197:10-K:2005             NA             NA      0.9633629             NA
3333:10-K:2005             NA             NA             NA      0.9752259
3370:10-K:2005             NA             NA             NA             NA
3673:10-K:2005             NA             NA             NA             NA
               3370:10-K:2006 3673:10-K:2006
1750:10-K:2005             NA             NA
1800:10-K:2005             NA             NA
1923:10-K:2005             NA             NA
2488:10-K:2005             NA             NA
2969:10-K:2005             NA             NA
3133:10-K:2005             NA             NA
3197:10-K:2005             NA             NA
3333:10-K:2005             NA             NA
3370:10-K:2005       0.941602             NA
3673:10-K:2005             NA      0.9745789

预期输出:

1750:10-K:2005_1750:10-K:2006     0.9291217 
1800:10-K:2005_1800:10-K:2006     0.9690067
1923:10-K:2005_1923:10-K:2006     0.8584429
2488:10-K:2005_2488:10-K:2006     0.956372

数据:

structure(list(`1750:10-K:2006` = c(0.929121725727165, NA, NA, 
NA, NA, NA, NA, NA, NA, NA), `1800:10-K:2006` = c(NA, 0.96900670959669, 
NA, NA, NA, NA, NA, NA, NA, NA), `1923:10-K:2006` = c(NA, NA, 
0.858442889654398, NA, NA, NA, NA, NA, NA, NA), `2488:10-K:2006` = c(NA, 
NA, NA, 0.956371967288172, NA, NA, NA, NA, NA, NA), `2969:10-K:2006` = c(NA, 
NA, NA, NA, 0.861326963904054, NA, NA, NA, NA, NA), `3133:10-K:2006` = c(NA, 
NA, NA, NA, NA, 0.93751593784196, NA, NA, NA, NA), `3197:10-K:2006` = c(NA, 
NA, NA, NA, NA, NA, 0.963362873672737, NA, NA, NA), `3333:10-K:2006` = c(NA, 
NA, NA, NA, NA, NA, NA, 0.975225879729218, NA, NA), `3370:10-K:2006` = c(NA, 
NA, NA, NA, NA, NA, NA, NA, 0.941602039119482, NA), `3673:10-K:2006` = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, 0.974578948898938)), row.names = c("1750:10-K:2005", 
"1800:10-K:2005", "1923:10-K:2005", "2488:10-K:2005", "2969:10-K:2005", 
"3133:10-K:2005", "3197:10-K:2005", "3333:10-K:2005", "3370:10-K:2005", 
"3673:10-K:2005"), class = "data.frame")

标签: r

解决方案


您可以尝试diag,但您必须先转换为矩阵,即

data.frame(v1 = rownames(df), v2 = diag(as.matrix(df)))

#               v1        v2
#1  1750:10-K:2005 0.9291217
#2  1800:10-K:2005 0.9690067
#3  1923:10-K:2005 0.8584429
#4  2488:10-K:2005 0.9563720
#5  2969:10-K:2005 0.8613270
#6  3133:10-K:2005 0.9375159
#7  3197:10-K:2005 0.9633629
#8  3333:10-K:2005 0.9752259
#9  3370:10-K:2005 0.9416020
#10 3673:10-K:2005 0.9745789

推荐阅读