Change all columns except format from 1 to dollar

I have a dataframe as follows:

A    B    C    D     E      F      G
AA   1    2    3     4      5      6
BB   3    2    1     9     23    2.6
CC   2    5    1   1.9    2.5   2.99

How do I change this framework so that all columns are converted to dollar format using a weight package? For a single column, I can simply do this:

library(scales)
df$B<-dollar(df$B)

How to do this for all columns except the first without re-writing this message for each column?

+4
source share
3 answers

We can do it with lapply

df[-1] <- lapply(df[-1], dollar)
df
#   A  B  C  D     E      F     G
#1 AA $1 $2 $3 $4.00  $5.00 $6.00
#2 BB $3 $2 $1 $9.00 $23.00 $2.60
#3 CC $2 $5 $1 $1.90  $2.50 $2.99

Or using tidyverse

library(tidyverse)
df %>% 
   mutate_at(vars(B:G), dollar)
+4
source

This will also work:

df[,2:ncol(df)] = dollar(as.matrix(df[,2:ncol(df)]))
df
#   A     B     C     D     E      F     G
#1 AA $1.00 $2.00 $3.00 $4.00  $5.00 $6.00
#2 BB $3.00 $2.00 $1.00 $9.00 $23.00 $2.60
#3 CC $2.00 $5.00 $1.00 $1.90  $2.50 $2.99
+1
source
df[, 2:ncol(df)] = apply(df[, 2:ncol(df)], 2, function(x) dollar(x))

df[,2:ncol(df)] = dollar(as.matrix(df[,2:ncol(df)]))
+1

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


All Articles