如何使用sprintf格式化R中数据框的打印?

时间:2018-01-22 21:48:45

标签: r dataframe formatting

假设我有一个包含混合模式(文本和数字)列的数据框:

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中有直接的方法吗?

2 个答案:

答案 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)