Search code examples
rdataframeexponential

How to calculate the exponential in some columns of a dataframe in R?


I have a dataframe:

X   Year    Dependent.variable.1    Forecast.Dependent.variable.1
1   2009    12.42669703             12.41831191
2   2010    12.39309563             12.40043599
3   2011    12.36596964             12.38256006
4   2012    12.32067284             12.36468414
5   2013    12.303095               12.34680822
6   2014    NA                      12.32893229
7   2015    NA                      12.31105637
8   2016    NA                      12.29318044
9   2017    NA                      12.27530452
10  2018    NA                      12.25742859

I want to calulate the exponential of the third and fourth columns. How can I do that?


Solution

  • In case your dataframe is called dfs, you can do the following:

    dfs[c('Dependent.variable.1','Forecast.Dependent.variable.1')] <- exp(dfs[c('Dependent.variable.1','Forecast.Dependent.variable.1')])
    

    which gives you:

        X Year Dependent.variable.1 Forecast.Dependent.variable.1
    1   1 2009               249371                      247288.7
    2   2 2010               241131                      242907.5
    3   3 2011               234678                      238603.9
    4   4 2012               224285                      234376.5
    5   5 2013               220377                      230224.0
    6   6 2014                   NA                      226145.1
    7   7 2015                   NA                      222138.5
    8   8 2016                   NA                      218202.9
    9   9 2017                   NA                      214336.9
    10 10 2018                   NA                      210539.5
    

    In case you know the column numbers, this could then also simply be done by using:

    dfs[,3:4] <- exp(dfs[,3:4])
    

    which gives you the same result as above. I usually prefer to use the actual column names as the indices might change when the data frame is further processed (e.g. I delete columns, then the indices change).

    Or you could do:

    dfs$Dependent.variable.1 <- exp(dfs$Dependent.variable.1)
    dfs$Forecast.Dependent.variable.1 <- exp(dfs$Forecast.Dependent.variable.1)
    

    In case you want to store these columns in new variables (below they are called exp1 and exp2, respectively), you can do:

    exp1 <- exp(dfs$Forecast.Dependent.variable.1)
    exp2 <- exp(dfs$Dependent.variable.1)
    

    In case you want to apply it to more than two columns and/or use more complicated functions, I highly recommend to look at apply/lappy.

    Does that answer your question?