r - 获取数据框中每一行的升序列名列表
问题描述
我有一个数据框,它由一列 ID 和许多列组成,每个 ID 具有不同的值,其中许多是 NA。例如:
ID w x y z
1 User1 3 2 NA NA
2 User2 7 9 NA 4
3 User3 NA NA 1 NA
4 User4 3 NA NA 5
有没有办法按照从最小值到最大值的顺序获取列标题的每个 ID 的列表,并删除 NA?
例如:
用户 1:x,w
用户 2:z、w、x
用户 3:是
到目前为止,我对此一无所知。我尝试使用 by_row 获取行的顺序,如下所示:
ordered <- by_row(moves.df, function(order) list(order[,2:ncol(moves.df)]), .collate = "list")$.out
但它的输出只是每一行的单观察数据帧列表,这些数据帧没有以任何方式排序。
ordered2 <- moves.df %>% rowwise() %>% mutate(placelist = list(rank(moves.df[,2:ncol(moves.df)])))
这给了我一个列表,但列表是我不认识的数字。
任何帮助将不胜感激!
解决方案
我们可以使用apply
逐行(margin = 1
),对值进行排序并获取列names
apply(df[-1], 1, function(x) names(sort(x)))
#$`1`
#[1] "x" "w"
#$`2`
#[1] "z" "w" "x"
#$`3`
#[1] "y"
#$`4`
#[1] "w" "z"
推荐阅读
- python - 如何为此功能提供硬编码文件?
- c# - 寻找一天的平均值
- java - 多维数组的问题
- reactjs - TS2339:属性 'defaultProps' 不存在于类型 '(props: any) => detailedReactHTMLElement<{ className: string; }, HTML元素>'
- go - readString 与 readLine
- java - 我可以将扩展类中的变量类型强制为 Java 中的子类型吗?
- git - 为什么我在 Heroku 上收到意外的远程拒绝?
- python - 更改命令的输入顺序
- html - 父 html 元素忽略子元素的填充
- python - ftplib获取命令返回值