【问题标题】:arrange some columns by name and then include all the others按名称排列一些列,然后包括所有其他列
【发布时间】:2016-02-19 10:21:32
【问题描述】:

我正在使用 RStudio 中的 View() 频繁进出的宽数据框。我的大部分注意力都集中在左边的几列上,但我经常需要滚动到最右边的框架外的列。是否有一种“快速而肮脏”的方式来“按名称”排列某些列的顺序并跟踪其余列?

我不想按位置对列进行排序,因为我可能需要返回一两步并包含更多列,然后这些位置可能指向错误的列。我不想进行子集化,因为我不知道我可能需要目视检查右侧的哪些列。

我的真实数据大约有 40 列宽;我已经包括了一个小假人来说明....

library(qdap)
library(dplyr)
arranger = data.frame(col1 = qcv(tom, dick, harry),
                  col2 = qcv(man, woman, child),
                  col3 = qcv(tall, small, middle),
                  col4 = qcv(blond, red, fair),
                  col5 = qcv(africa, europe, moon),
                  col6 = qcv(dead, alive, zombie),
                  col7 = qcv(funny, boring, sad),
                  stringsAsFactors = F)

例如,我想将 col3 和 col5 作为前两列,然后将其余列放在后面。我正在从 dplyr 中寻找一种类似于 select() 的快速方法...

arranger = select(arranger, col3, col5, '然后是其他列')

请问大家有什么好的想法吗? TIA

【问题讨论】:

  • 使用我的moveMe函数(news.mrdwab.com/post/moveme)(最好与来自“data.table”的setcolorder结合使用)。
  • 您可以使用 append from base R 更改位置或在两个值之间插入。
  • 感谢 Ananda 和 @akrun 的建议。非常感谢。

标签: r dataframe qdap


【解决方案1】:

如果您想使用前面提到的 dplyr 包,那么 Everything() 将实现这一目标。

以下是一些更新的代码,使用您的示例:

library(qdap)
library(dplyr)

arranger <-  data.frame(col1 = qcv(tom, dick, harry),
                      col2 = qcv(man, woman, child),
                      col3 = qcv(tall, small, middle),
                      col4 = qcv(blond, red, fair),
                      col5 = qcv(africa, europe, moon),
                      col6 = qcv(dead, alive, zombie),
                      col7 = qcv(funny, boring, sad),
                      stringsAsFactors = F)

arrangerNew <- dplyr::select(arranger, col3, col5, everything())

【讨论】:

  • 谢谢@PhilC。那是完美的。 everything() 简直完美!我觉得我可能会闯入俄克拉荷马州!
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 2020-11-11
  • 2019-08-04
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多