我的数据框如下:
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)
如何为除第一列之外的所有列执行此操作而不为每列反复写入此内容?
答案 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)]))