Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Sort dataset columns by num, then factors

Hi I have a dataset that I have transformed to only nums and factors,
I want to separate the factors columns from the numerical columns.
I’m new to coding and its probably very simple but I’ve looked around and I’m very thankful if anyone could help

'data.frame':   400 obs. of  25 variables:
 $ age           : num  48 7 62 48 51 60 68 24 52 53 ...
 $ bp            : num  80 50 80 70 80 90 70 76 100 90 ...
 $ sg            : num  1.02 1.02 1.01 1 1.01 ...
 $ al            : num  1 4 2 4 2 3 0 2 3 2 ...
 $ su            : num  0 0 3 0 0 0 0 4 0 0 ...
 $ rbc           : Factor w/ 2 levels "1","0": 1 1 1 1 1 1 1 1 1 2 ...
 $ pc            : Factor w/ 2 levels "1","0": 1 1 1 2 1 1 1 2 2 2 ...
 $ pcc           : Factor w/ 2 levels "1","0": 2 2 2 1 2 2 2 2 1 1 ...
 $ ba            : Factor w/ 2 levels "1","0": 2 2 2 2 2 2 2 2 2 2 ...
 $ bgr           : num  121 148 423 117 106 74 100 410 138 70 ...
 $ bu            : num  36 18 53 56 26 25 54 31 60 107 ...
 $ sc            : num  1.2 0.8 1.8 3.8 1.4 1.1 24 1.1 1.9 7.2 ...
 $ sod           : num  137 137 137 111 137 142 104 137 137 114 ...
 $ pot           : num  4 4 4 2.5 4 3.2 4 4 4 3.7 ...
 $ hemo          : num  15.4 11.3 9.6 11.2 11.6 12.2 12.4 12.4 10.8 9.5 ...
 $ pcv           : num  44 38 31 32 35 39 36 44 33 29 ...
 $ wc            : num  7800 6000 7500 6700 7300 ...
 $ rc            : num  5.2 4 4 3.9 4.6 4.4 4 5 4 3.7 ...
 $ htn           : Factor w/ 2 levels "1","0": 1 2 2 1 2 1 2 2 1 1 ...
 $ dm            : Factor w/ 2 levels "1","0": 1 2 1 2 2 1 2 1 1 1 ...
 $ cad           : Factor w/ 2 levels "1","0": 2 2 2 2 2 2 2 2 2 2 ...
 $ appet         : Factor w/ 2 levels "1","0": 2 2 1 1 2 2 2 2 2 1 ...
 $ pe            : Factor w/ 2 levels "1","0": 2 2 2 1 2 1 2 1 2 2 ...
 $ ane           : Factor w/ 2 levels "1","0": 2 2 1 1 2 2 2 2 1 1 ...
 $ classification: Factor w/ 2 levels "1","0": 1 1 1 1 1 1 1 1 1 1 ...

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Create a boolean vector fac with information which is factor, then cbind subsets. Example:

dat
#   F1 N2 N1 F2 N3 F3 N4 F4
# 1  A  4  1  D  7  G 10  J
# 2  B  5  2  E  8  H 11  K
# 3  C  6  3  F  9  I 12  L

fac <- sapply(dat, is.factor)
cbind(dat[!fac], dat[fac])
#   N2 N1 N3 N4 F1 F2 F3 F4
# 1  4  1  7 10  A  D  G  J
# 2  5  2  8 11  B  E  H  K
# 3  6  3  9 12  C  F  I  L

Data

dat <- structure(list(F1 = structure(1:3, levels = c("A", "B", "C"), class = "factor"), 
    N2 = 4:6, N1 = 1:3, F2 = structure(1:3, levels = c("D", "E", 
    "F"), class = "factor"), N3 = 7:9, F3 = structure(1:3, levels = c("G", 
    "H", "I"), class = "factor"), N4 = 10:12, F4 = structure(1:3, levels = c("J", 
    "K", "L"), class = "factor")), row.names = c(NA, -3L), class = "data.frame")
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading