How can I select and rename a long list of columns from a data frame to R?

I have a data set with many columns, I have to select part of them and rename them for analysis. I am currently using select from the dplyr package. But it was difficult to tune each time for many attributes. Are there any better methods for doing this?

For example, I use the mtcars

 > 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 

I want to select the columns: mpg , cyl and rename them as x , y

I am currently using:

 > df <- mtcars %>% select(x=mpg, y=cyl) > head(df) xy Mazda RX4 21.0 6 Mazda RX4 Wag 21.0 6 Datsun 710 22.8 4 Hornet 4 Drive 21.4 6 Hornet Sportabout 18.7 8 Valiant 18.1 6 

This works, but it is cumbersome when I often change the parameters in parentheses. I want to use a list to solve the problem, but this will not work.

For example, I want to create an attribute list to simplify it:

 myselection <- c( x = mpg, y = cyl ) df <- mtcars %>% select(myselection) # It is wrong! 

But this is wrong, how can I make it work?

+5
source share
2 answers

You want a custom grade (well technically, it's a standard grade, and the usual use of dplyr is NSE), see vignette("nse") :

 library(dplyr) dots <- list(x="mpg", y="cyl") select_(mtcars, .dots = dots) 
+7
source

An alternative to base R may be

 myselection <- c(x = "mpg", y = "cyl") setNames(mtcars[myselection], names(myselection)) 
+5
source

Source: https://habr.com/ru/post/1236807/


All Articles