我有一个我正在分析的大数据框,但该框架涉及字符,整数或数字数据。我想以这样的方式组织列,使得字符列首先出现,然后是数字列,最后是整数列。有没有办法自动执行此操作或快速执行此操作?
我的数据框有大约800列,而且它们大多有长而复杂的名称
答案 0 :(得分:1)
使用vapply(DF, typeof, character(1L))
找到类型。然后,使用which
按位置对列进行排序:
DF <- data.frame(A = letters,
B = 1:26,
C = 1:26 + 5.5,
D = LETTERS,
# X = 1:26 > 5,
stringsAsFactors = FALSE)
types <- vapply(DF, typeof, character(1L))
`%notin%` <- Negate("%in%")
DF[, c(which(types == "character"),
which(types == "double"),
which(types == "integer"),
which(types %notin% c("character", "double", "integer")))]
#> A D C B
#> 1 a A 6.5 1
#> 2 b B 7.5 2
#> 3 c C 8.5 3
#> 4 d D 9.5 4
#> 5 e E 10.5 5
#> 6 f F 11.5 6
#> 7 g G 12.5 7
#> 8 h H 13.5 8
#> 9 i I 14.5 9
#> 10 j J 15.5 10
#> 11 k K 16.5 11
#> 12 l L 17.5 12
#> 13 m M 18.5 13
#> 14 n N 19.5 14
#> 15 o O 20.5 15
#> 16 p P 21.5 16
#> 17 q Q 22.5 17
#> 18 r R 23.5 18
#> 19 s S 24.5 19
#> 20 t T 25.5 20
#> 21 u U 26.5 21
#> 22 v V 27.5 22
#> 23 w W 28.5 23
#> 24 x X 29.5 24
#> 25 y Y 30.5 25
#> 26 z Z 31.5 26
由reprex package(v0.2.0)于2018-06-19创建。
如果您知道只有字符,双列或整数列,或者只想要这样的列,则可以丢弃最后一行。