如何将指定列移动到其DataFrame的末尾而不更改所有其他列的顺序?

oknwwptz  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(147)

我有一堆列分布在整个DataFrame中。这些列有一个共同点,那就是它们的列名都包含“___”。如何将所有这些列移动到DataFrame的末尾?
例如:aaa___1、abc_2___2、xyzhw1___3等。

iaqfqrcu

iaqfqrcu1#

我们可以使用contains来选择指定的列

df <- data.frame(col1=c(3,4),a__2=c(1,2),col2=c(5,6))
df

  col1 a__2 col2
1    3    1    5
2    4    2    6

cbind(select(df,-contains("__")),select(df,contains("__")))
  col1 col2 a__2
1    3    5    1
2    4    6    2
kknvjkwl

kknvjkwl2#

使用ordergrepl

dat[order(grepl("___", colnames(dat)))]
  A B aaa___1 abc_2___2 xyzhw1___3
1 3 5       1         2          4
2 4 6       2         3          5
3 5 7       3         4          6
4 6 8       4         5          7
数据
dat <- structure(list(aaa___1 = 1:4, abc_2___2 = 2:5, A = 3:6, 
xyzhw1___3 = 4:7, B = 5:8), class = "data.frame", row.names = c(NA, -4L))

相关问题