更改除第1个到美元格式之外的所有列

时间:2017-02-06 17:01:43

标签: r dplyr

我的数据框如下:

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

如何更改此数据框以使用scale包将所有列转换为美元格式?对于单个列,我可以这样做:

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

如何为除第一列之外的所有列执行此操作而不为每列反复写入此内容?

3 个答案:

答案 0 :(得分:4)

我们可以使用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

或使用tidyverse

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

答案 1 :(得分:1)

这也有效:

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

答案 2 :(得分:1)

df[, 2:ncol(df)] = apply(df[, 2:ncol(df)], 2, function(x) dollar(x))

OR

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