从数值向量中剥离前导零而不更改类

时间:2014-07-09 04:45:18

标签: r

我有以下数据,这是几个美国职业棒球大联盟的统计数据。

  Year   AVG   SLG  TB   OBP IsoPow    RC
1 1986 0.223 0.300 172 0.330  0.194  64.1
2 1987 0.261 0.356 271 0.329  0.230  92.8
3 1988 0.283 0.357 264 0.368  0.208 100.0
4 1989 0.248 0.328 247 0.351  0.178  91.9
5 1990 0.301 0.374 293 0.406  0.264 128.0
6 1991 0.292 0.367 262 0.410  0.222 118.2

通常,百分比型MLB统计信息显示为小数,但删除了前导零。我也想这样做,但也保留变量的class,在本例中为numeric

例如,使用bonds$AVG我希望结果是一个看起来完全像

的数字向量
[1] .223 .261 .283 .248 .301 .292

使用sub,向量从数字转换为字符,然后在使用as.numeric包装后返回其原始数字状态。

> sub(0, "", bonds$AVG)
# [1] ".223" ".261" ".283" ".248" ".301" ".292"
> as.numeric(sub(0, "", bonds$AVG))
# [1] 0.223 0.261 0.283 0.248 0.301 0.292

这可能在R?

bonds <-
structure(list(Year = c(1986, 1987, 1988, 1989, 1990, 1991), 
    AVG = c(0.223, 0.261, 0.283, 0.248, 0.301, 0.292), SLG = c(0.3, 
    0.356, 0.357, 0.328, 0.374, 0.367), TB = c(172, 271, 264, 
    247, 293, 262), OBP = c(0.33, 0.329, 0.368, 0.351, 0.406, 
    0.41), IsoPow = c(0.194, 0.23, 0.208, 0.178, 0.264, 0.222
    ), RC = c(64.1, 92.8, 100, 91.9, 128, 118.2)), .Names = c("Year", 
"AVG", "SLG", "TB", "OBP", "IsoPow", "RC"), row.names = c(NA, 
6L), class = "data.frame")

1 个答案:

答案 0 :(得分:2)

也许您可以通过修改print.data.frame

来概括以下内容
f1 <- function(x) noquote(sub(0, "", x))
f1(bonds$AVG)
.223 .261 .283 .248 .301 .292