How to compress imported column types in R -


my code importing specific file far looks like

df <- read_excel("file path",         col_types = c("numeric", "text", "numeric",           "numeric", "numeric", "numeric",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "numeric", "numeric", "numeric", "numeric",           "numeric", "numeric", "text", "text", "text", "text", "text", "text",           "text", "text", "text", "text", "text", "text", "text"),         skip = 8) 

how go compressing "col types" sections still keeping same effect. i've tried sapply(df, as.numeric), changes columns numeric need second text.

note: understand other columns besides second have "text", example halfway point of attempt.

note read_excel guess types if not work on spreadsheet:

1) rep use rep this:

col_types <- rep(c("numeric", "text", "numeric", "text", "numeric", "text"),                  c(1l, 1l, 4l, 67l, 6l, 13l))  # test - col_types_orig defined in note @ end identical(col_types, col_types_orig)  ## [1] true 

2) rle can compress using rle , uncompress using inverse.rle:

r <- rle(col_types_orig) col_types <- inverse.rle(r)  identical(inverse.rle(r), col_types_orig) ## [1] true 

you can r r code using dput(r). (in fact got arguments rep in (1) examining dput output.)

3) noting there 92 elements in col_types_orig , text except few numeric can this:

length(col_types_orig) ## [1] 92  table(col_types_orig) ## col_types_orig ## numeric    text  ##      11      81   which(col_types_orig == "numeric") ## [1]  1  3  4  5  6 74 75 76 77 78 79  col_types <- replace(rep("text", 92), c(1, 3:6, 74:79), "numeric")  identical(col_types, col_types_orig)  ## [1] true 

note:

col_types_orig <-  c("numeric", "text", "numeric", "numeric", "numeric", "numeric",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text",  "text", "text", "text", "numeric", "numeric", "numeric", "numeric",  "numeric", "numeric", "text", "text", "text", "text", "text",  "text", "text", "text", "text", "text", "text", "text", "text" 

Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -