R:按对象类对列进行排序

时间:2016-10-10 13:51:30

标签: r class sorting dataframe

您可以根据对象类对df进行排序吗?说

data("mtcars")
mtcars$cyl <- as.factor(mtcars$cyl)
mtcars$vs <- as.factor(mtcars$vs)
mtcars$am <- as.factor(mtcars$am)
sapply(mtcars,class) 

我首先想要所有数字变量然后最后想要所有因素?我希望能够在更大的数据集上执行此操作,因此我更喜欢不依赖于列号子集的解决方案。欢呼声。

1 个答案:

答案 0 :(得分:0)

也许这个?

head(mtcars)

                   # mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

x <- mtcars[,names(sort(unlist(lapply(mtcars, class)), decreasing = T))]

head(x)
                   # mpg disp  hp drat    wt  qsec gear carb cyl vs am
# Mazda RX4         21.0  160 110 3.90 2.620 16.46    4    4   6  0  1
# Mazda RX4 Wag     21.0  160 110 3.90 2.875 17.02    4    4   6  0  1
# Datsun 710        22.8  108  93 3.85 2.320 18.61    4    1   4  1  1
# Hornet 4 Drive    21.4  258 110 3.08 3.215 19.44    3    1   6  1  0
# Hornet Sportabout 18.7  360 175 3.15 3.440 17.02    3    2   8  0  0
# Valiant           18.1  225 105 2.76 3.460 20.22    3    1   6  1  0

x中,如您所见,属于cyl类的列vsamfactor位于最后,而{首先是numeric课。