有没有一种简单的方法可以将美元符号添加到列中?

时间:2015-09-25 00:13:07

标签: r format

有没有一种简单的方法可以将美元符号添加到我拥有的列中?除了小数,逗号等之外,我在format()内找不到任何方法。例如,我有:

numbers <- data.frame(x1 = 1:4, x5 = 11:14, x6 = 21:24, y = 31:34)

如何格式化numbers$y前面有美元符号?

4 个答案:

答案 0 :(得分:4)

如果你想获得最高的矫枉过正并将数字保留在列上,但是让它们打印出美元符号,你可以写一个打印方法。

class(numbers$y) <- "dollar"
format.dollar <- function(x, ...) paste0("$", unclass(x))
as.data.frame.dollar <- base:::as.data.frame.factor

现在用美元符号打印......

numbers
#   x1 x5 x6   y
# 1  1 11 21 $31
# 2  2 12 22 $32
# 3  3 13 23 $33
# 4  4 14 24 $34

...但该列仍为数字。

numbers$y[]
# [1] 31 32 33 34

答案 1 :(得分:2)

numbers$y<-paste("$",numbers$y)

会做得很好。但要注意,它被视为文本而不是数字

答案 2 :(得分:1)

试试这个:

numbers$y <- paste0('$', numbers$y)

请注意,只有在完成此列的处理后才能执行此操作 - 添加美元符号后,它将是一个chr且不符合数值计算的条件。

要撤消此步骤,您可以使用:

as.numeric(substring(text = numbers$y, first = 2))

为了将来参考,paste0(...)只是paste(..., sep="")的快捷方式。由于paste默认为空格分隔。

答案 3 :(得分:0)

我喜欢{tidyr}因为它易于使用:

data.frame(x1 = 1:4, x5 = 11:14, x6 = 21:24, y = 31:34, unit = "$") %>% 
  tidyr::unite_("y2", c("unit", "y"), sep = "", remove = TRUE)