r - 将数据框的行值与其对应的值匹配
问题描述
下图是我在 R 中的数据集:
可重现的例子:
data <- data.frame(
time = rep(0.2, 5),
m1 = c(9,15,2,8,18),
m2 = c(11,1,13,12,NA),
m3 = c(16,NA,7,17,NA),
m4 = c(10,NA,3,4,NA),
m5 = c(14,NA,6,NA,NA),
m6 = c(NA,NA,5,NA,NA)
)
我想要以下输出,它是一个表格,显示数据集中的每个值,并且低于该值所属的行号:
预先感谢您的帮助 !
解决方案
删除第一列,转置剩下的内容,将其转换回数据框,将列名设置为原始行号,堆叠并省略 NA 行。然后按值重新排序。
d <- na.omit(stack(setNames(as.data.frame(t(data[-1])), 1:nrow(data))))
d[order(d$values), ]
给予:
values ind
8 1 2
13 2 3
16 3 3
22 4 4
18 5 3
17 6 3
15 7 3
19 8 4
1 9 1
4 10 1
2 11 1
20 12 4
14 13 3
5 14 1
7 15 2
3 16 1
21 17 4
25 18 5
推荐阅读
- node.js - 在 Firebase 函数 onRequest w/o Express 上解析文件
- swift - 为什么当我触发 UIAlert 时我的数组只更新为“”
- javascript - 替换二维数组中的子数组
- android - 什么时候释放android服务中的协程资源?
- css - 如何在没有前后的情况下创建像半圆形这样的自定义形状?
- c++ - 从 C++ 上的 url 下载文件
- database - 如何在 Dart (Flutter) 中获取每个可迭代值的索引号
- python - 子表中许多值的空用户 ID
- javascript - javascript 在初始化之前无法访问“a”
- c - 如何知道哪一行的和最大