r - 折叠我的数据提取对角线元素
问题描述
我提取结果的方式以某种方式将它们保留为数据框中的对角线元素。我想减少数据,保留行名和列名。即合并行名和列名。
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")
解决方案
您可以尝试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
推荐阅读
- xml - XSLT 匹配输出匹配模板外部的值
- django - 如何为 GenericForeignKeys 预取相关()?
- php - 我无法使用 Homebrew 安装 php
- javascript - 表单生成器角度无法绑定到“formGroup”,因为它不是“表单”的已知属性
- bash - 在 bash 中使用一组以相同字符串开头的变量
- python - Redshift 新集群过去可以访问,但现在不再可用
- python - 过滤列表列的列表,然后在 Python 中逐行拆分(分解)
- webpack - 单个 webpack 包中的重复依赖项,但包锁定文件中没有
- linker - 错误 L6242E:无法链接对象,因为其属性与图像属性不兼容
- macos - 符号链接的行为不像符号链接