0

I have a data frame df, it looks something like this:

alpha romeo beta carlos bumblebee
alpha value 1 romeo value 1 beta value 1 carlos value 1 bumblebee value 1
alpha value 2 romeo value 2 beta value 2 carlos value 2 bumblebee value 2

I also have a data dictionary data_dict:

VariableName column2 column3
alpha some value some value
carlos some value some value
romeo some value some value
beta some value some value
bumblebee some value some value

How do I order the column of df to have the same order as the entires in VariableName from data_dict?

-output:

alpha carlos romeo beta bumblebee
alpha value 1 carlos value 1 romeo value 1 beta value 1 bumblebee value 1
alpha value 2 carlos value 2 romeo value 2 beta value 2 bumblebee value 2
user123
  • 307
  • 7

1 Answers1

3

I'd use dplyr::select

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
variablenames <- c("alpha", "carlos", "romeo", "beta", "bumblebee")
data_dict <- data.frame(VariableName = variablenames,
                        column2 = "some value",
                        column3 = "some value")

df <- data.frame(alpha = 1:3,
                 romeo = 1:3,
                 beta = 1:3,
                 carlos = 1:3,
                 bumblebee = 1:3)
select(df, data_dict$VariableName)
#>   alpha carlos romeo beta bumblebee
#> 1     1      1     1    1         1
#> 2     2      2     2    2         2
#> 3     3      3     3    3         3

Created on 2023-01-31 by the reprex package (v2.0.1)

Gregory
  • 4,147
  • 7
  • 33
  • 44