假设我有一个包含混合模式(文本和数字)列的数据框:
df <- data.frame(A = c("a", "b", "c"), B = c(5.21, 6.32, 18.14), C = c(14.7, 9.1, 7.22))
我希望最终使用sprintf将输出格式化为(例如)以下内容并添加货币符号和百分比字符:
A B C
1 a $5.21 14.7%
2 b $6.32 9.1%
3 c $18.14 7.2%
在R中有直接的方法吗?
答案 0 :(得分:1)
scales
包具有可以执行此操作的dollar()
和percent()
个功能:
df$B <- dollar(df$B)
df$C <- percent(df$C / 100)
答案 1 :(得分:1)
您只需要ifelse
:
df <- data.frame(A = c("a", "b", "c"), B = c(5.21, 6.32, 18.14), C = c(14.7, 9.1, 7.22))
forme<-function(x,y){
xy<-ifelse(x=="currency",'$%s','%s%%')
sprintf(xy,y)
}
df$B<-forme(x="currency",df$B)
df$C<-forme(x="percent",df$C)