有没有一种简单的方法可以将美元符号添加到我拥有的列中?除了小数,逗号等之外,我在format()
内找不到任何方法。例如,我有:
numbers <- data.frame(x1 = 1:4, x5 = 11:14, x6 = 21:24, y = 31:34)
如何格式化numbers$y
前面有美元符号?
答案 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)